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 -」で変身した方が、変身しようとしたユーザーになりきれます。