web-dev-qa-db-ja.com

`Sudo`で実行されるスクリプト内から元の$ USER変数にアクセスできますか?

奇妙な質問です。スクリプトは次のとおりです。

echo $USER

実行に使用するコマンドは次のとおりです。

Sudo ./myscript.sh

現時点では「root」と表示されますが、jonというユーザー名を表示する必要があります。コマンドではなくスクリプトを変更することでそれを行う方法はありますか?

19
Jonathan

USERの代わりにSudo_USER環境変数を使用します。

Sudoは、それを実行したユーザーの名前をSudo_USER環境変数に配置します。

ek@Io:~$ Sudo sh -c 'echo $USER'
[Sudo] password for ek:
root
ek@Io:~$ Sudo sh -c 'echo $Sudo_USER'
ek

したがって、スクリプト内で$USER$Sudo_USERに置き換えるだけで済みます。

echo $Sudo_USER

参考文献

28
Eliah Kagan