44

sudoを使用してシェルスクリプトを実行した場合、正しい$ USERを取得するにはどうすればよいですか?

Macインストールパッケージでインストール後のスクリプトとして実行し、自動的にsudoされますが、ユーザー名を使用して何かを行う必要があります。

ただし、$HOMEは正しいです。エレガントでない方法は、ホームパスから名前を抽出することですが、これを行う自然な方法があるのではないかと思います。

インストーラー内の自動呼び出しであるため、スクリプトの呼び出し方法に影響を与えることはできません。

4

4 に答える 4

43

私のシステムでは、変数$SUDO_USERは呼び出し元のユーザー名に設定されています。

${HOME}変数からユーザー名を直接抽出しないでください。構成中であり、計算されていません。ユーザー名を抽出するには、ファイルを調べることができます/etc/passwdが、これはシステムに大きく依存します。たとえば、LDAPディレクトリを調べる必要がある場合や、エントリがNISを介して伝播される場合があります...

于 2009-10-27T09:25:36.073 に答える
28

$(logname)現在 sudo を実行している場合でも、ログイン名を返すを使用できます。

于 2015-02-12T13:38:35.893 に答える
19

変数SUDO_USERを調べます。

http://www.gratisoft.us/sudo/man/sudo.html#environment

ユーザーを取得する別の方法は、whoコマンドを使用することです。これは、ユーザーがsudoを実行したかどうかを気にしない場合に便利です。

who -m | awk '{print $1;}'
于 2009-10-27T09:27:18.363 に答える
9

SUDO_USERポータブルではありません。Fedora 17 では未設定です。

$USERおよび変数は、$UIDsudo を呼び出すときにも予測できません。sudoer を報告するディストリビューションもあれば、root ユーザーを報告するディストリビューションもあります。

決して完璧ではありませんが、使用できますtest -w ~root && echo I have write access to ~root

于 2012-11-02T05:14:40.897 に答える