su と su - の違い

ハイフンが付くのと付かない場合の違いは、以下。

■su
rootに変身するが、switch userしたディレクトリのまま。
■su -
rootに変身して、rootのホームディレクトリに勝手に移動する。

ハイフンが付くと、切り替え後のユーザーの環境に勝手に移動する、ということです。なので↓

例:sudo su - abyss
→abyssに変身してabyssのホームディレクトリに勝手に移動する。

例:sudo su abyss
→abyssに変身はするが、上記のコマンドを実行したディレクトリのまま。

では、なぜハイフンをつけただけで、変身後のユーザーのホームディレクトリに勝手に移動するのか調べてみた。理由は、ハイフンを付けることで、変身するユーザーの環境設定に変更されるから、だそう。つまりは、rootに変身する例で言うと以下↓。

■su  →rootに変身するが、switch userしたディレクトリのまま。
つまり、変身前(一般ユーザー)の環境設定を引き継いだままrootになるということ。

■su - →rootに変身して、rootのホームディレクトリに勝手に移動する。
つまり、変身後(root)の環境設定に切り替えてrootに変身する、ということ。

環境設定を変身後のユーザーに切り替えるのと切り替えないのとで、何が変わってくるかというと、上記のrootに変身する場合、下のハイフンを付けた「su -」で変身すれば、例えば、rootでしかパスが通っていないコマンドが扱えるようになる。なので、ちょっとめんどくさいけど、「su -」で変身した方が、変身しようとしたユーザーになりきれます。