コマンドラインでユーザーを切り替えるとき、誰かが su -p (--preserve-environment) と su - の違いを説明できますか?
私は「su -」に精通していますが、 su -p がどのように違うのか、もしあったとしても、私にはわかりません。
マンページでわかるように、su
「環境変数をリセットしないでください」と書かれています。
Unix シェルでは、変数に値を格納できます。これ自体も使用します (つまり、PATH 変数は実行可能ファイルの場所を保存します)。-p を使用すると、新しいユーザーから環境変数を取得する代わりに、環境変数を保持します。(ただし、ユーザーが持っているシェル起動スクリプトによって上書きされる可能性があります..)
違いはsu -p
、元のユーザーに対して行ったすべてのパーソナライズを保持できることです。たとえば、エイリアス、bashrc、プロファイルを保持します...
簡単に言えば:
- using "su" you get SuperUser's rights **and** environment
- using "su -p" you get only SuperUser's rights (the environment stays your own)