奇妙な質問です。スクリプトは次のとおりです。
echo $USER
実行に使用するコマンドは次のとおりです。
Sudo ./myscript.sh
現時点では「root」と表示されますが、jon
というユーザー名を表示する必要があります。コマンドではなくスクリプトを変更することでそれを行う方法はありますか?
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
man Sudo
、「環境」のセクション:
Sudo_USER Set to the login name of the user who invoked Sudo.
このマンページには、Sudo_UID
やSudo_GID
など、Sudo
で定義されている便利なその他の関連環境変数も記載されています。