web-dev-qa-db-ja.com

CentOSの `su`と` su -`の違いは何ですか?

suを実行して、CentOSで「root」に切り替えようとしました。 「root」に変わりますが、実際の「root」ユーザーには見えません。

たとえば、デフォルトでは、/sbinifconfigコマンドは通常のユーザーのパスにはありませんが、 'root'の場合はコマンドを見つけることができます。 suを実行しても、ifconfigを実行しようとするとbash: ifconfig: command not foundの出力が得られます。

ただし、su -を実行すると、ifconfigが機能します。

CentOSのsusu -の違いは何ですか?

7
PJ.

-オプションを追加すると、環境の動作に影響します。すべての実用的な目的のために、環境は完全にリセットされます。一般に、プレーンな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.
16
Scott Pack

su -はログインシェルを呼び出します。これにより、コンソールまたはSSHを介してrootとして直接ログインした場合と同じように、rootの.bashrcおよびその他のシェル起動スクリプトが実行されます。ルートのプロファイルは通常、ifconfigが通常存在する/sbinを含むようにパスを設定します。

6
violet