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


19

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

echo $USER

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

sudo ./myscript.sh

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


はい、それを行う方法があります。しかし、おそらく最も簡単な方法は回避策です。「sudoスクリプト」がアクセスできるように、ユーザーIDを「保存」する別のスクリプトからそのスクリプトを呼び出します。
sudodus 16

回答:


28

SUDO_USER代わりに環境変数を使用しますUSER

sudoSUDO_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

参考文献

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.