su
を実行して、CentOSで「root」に切り替えようとしました。 「root」に変わりますが、実際の「root」ユーザーには見えません。
たとえば、デフォルトでは、/sbin
のifconfig
コマンドは通常のユーザーのパスにはありませんが、 'root'の場合はコマンドを見つけることができます。 su
を実行しても、ifconfig
を実行しようとするとbash: ifconfig: command not found
の出力が得られます。
ただし、su -
を実行すると、ifconfig
が機能します。
CentOSのsu
とsu -
の違いは何ですか?
-
オプションを追加すると、環境の動作に影響します。すべての実用的な目的のために、環境は完全にリセットされます。一般に、プレーンなsu
の代わりにsu -
を使用することをお勧めします。マニュアルページから:
-l Simulate a full login. The environment is discarded except for HOME, Shell, PATH, TERM, and USER. HOME and Shell are modified as above.
USER is set to the target login. PATH is set to ``/bin:/usr/bin''. TERM is imported from your current environment. The invoked Shell is
the target login's, and su will change directory to the target login's home directory.
- (no letter) The same as -l.
su -
はログインシェルを呼び出します。これにより、コンソールまたはSSHを介してrootとして直接ログインした場合と同じように、rootの.bashrc
およびその他のシェル起動スクリプトが実行されます。ルートのプロファイルは通常、ifconfig
が通常存在する/sbin
を含むようにパスを設定します。