sudo -s printenv PATH
そしてsudo -i printenv PATH
他の結果を示しています。
sudo -s printenv PATH
印刷はと同じですsudo printenv PATH
。
マニュアルページによると、-i
オプションソースはPATH変数を設定します。
これは、シェルが.profile、.bash_profile、または.loginなどのログイン固有のリソースファイルを読み取ることを意味します。
オプションについては、次のように-s
言います。
SHELL環境変数(設定されている場合)で指定されたシェルまたは呼び出されるユーザーのパスワードデータベースエントリとして指定されたシェルを実行します。コマンドを指定すると、シェルの -c オプションで実行できるようにシェルに渡されます。コマンドを指定しないと、対話型シェルが実行されます。
Run the shell specified by the SHELL environment variable if it is set
コマンドを実行するときにbash設定ファイルを使用できることを意味しますかsudo -s
?
sudo -s
同じ環境変数が必要ですsudo -i
が、ディレクトリが変更されるためできませんsudo -i
。
編集する:
/etc/profile.d/ENV_FILE
if ! echo ${PATH} | /bin/grep -q /usr/customized/bin ; then
PATH=/usr/customized/bin:${PATH}
fi
if ! echo ${PATH} | /bin/grep -q /usr/customized/sbin ; then
if [ `/usr/bin/id -u` = 0 ] ; then
PATH=/usr/customized/sbin:${PATH}
fi
fi
上記のファイルを読み取ると、ルートのみパスを取得できますsbin
。
そしてenvファイルはclsuterに配布されるので、envファイルに触れるのは合理的ではないようです。
sudo -i
そのため、rootユーザーとして上記の環境ファイルを読み取る環境変数を取得する必要があります。