「sudo -s env」対「sudo -i env」

「sudo -s env」対「sudo -i env」

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ユーザーとして上記の環境ファイルを読み取る環境変数を取得する必要があります。

ベストアンサー1

おすすめ記事