"sudo sh"がprofile.dスクリプトをソースしない理由

CentOS 7をインストールしました。ここで、/bin/sh は bash へのシンボリックリンクです。しかし、sudoを使用するときは異なる動作をします。たとえば、「sudo sh」を使用すると、次のようになります。

[[email protected] ~]$ sudo sh
sh-4.2# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin

「sudo bash」を使用してください:

[[email protected] ~]$ sudo bash
[[email protected] centos]# echo $PATH
/opt/puppetlabs/puppet/bin:/sbin:/bin:/usr/sbin:/usr/bin

追加のPATH要素は/etc/profile.d/-scriptで提供されます。なぜ「sudo sh」が表示されないのですか?

ベストアンサー1

~/.bashrcSource /etc/bashrc、それから source /etc/profile.d/*(しかし/etc/profile? ではない)。この混乱した動作がRedhat派生製品に固有のものかどうかはわかりません。

~/.bashrc非ログインシェルとして実行されたときにbashによって取得されます。 (ログインシェルで実行すると、バッシュ文書~./bashrc)で手動ソーシングを確認することをお勧めします~/.bash_profile

しかし、実行してみるとshソース~/.bashrcはありません。 shログインシェルとして実行しないと、何もインポートされません。

この混乱を避けるための1つの方法は、必要に応じてsudo -iログインシェルを実行することです。使用されるシェルは、ターゲットユーザーのシェル(つまり、rootデフォルトでは)に基づいて選択されます。

おすすめ記事