
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
~/.bashrc
Source /etc/bashrc
、それから source /etc/profile.d/*
(しかし/etc/profile
? ではない)。この混乱した動作がRedhat派生製品に固有のものかどうかはわかりません。
~/.bashrc
非ログインシェルとして実行されたときにbashによって取得されます。 (ログインシェルで実行すると、バッシュ文書~./bashrc
)で手動ソーシングを確認することをお勧めします~/.bash_profile
。
しかし、実行してみるとsh
ソース~/.bashrc
はありません。 sh
ログインシェルとして実行しないと、何もインポートされません。
この混乱を避けるための1つの方法は、必要に応じてsudo -i
ログインシェルを実行することです。使用されるシェルは、ターゲットユーザーのシェル(つまり、root
デフォルトでは)に基づいて選択されます。