目的
$ sudo su -
というコマンドをよく使うのですが、- が何者なのか分からないので調査しました。
sudoについて
他のユーザーとしてコマンドを実行します
(以下 本より引用)
sudoコマンドで、どのユーザーとしてどのようなコマンドが実行可能かなどの制約条件は、設定ファイルsudoers(/etcや/usr/local/etcディレクトリにあります)にあらかじめ設定されていなければなりません
suについて
別のユーザー権限に切り替えます
(以下 man コマンドより引用)
-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 -
で root 権限に切り替えて、そのユーザーでログインしたのと 同じ状態にします
実験 (Vagrant環境にて)
環境変数を引き継がない場合
$ export MYABC=999
$ echo $MYABC
999
$ sudo su -
# echo $MYABC
環境変数を引き継ぐ場合
$ export MYABC=999
$ echo $MYABC
999
$ sudo su root
# echo $MYABC
999
root 権限で環境変数が引き継がれていないことが確認できます。
参考
- [UNIXコマンド 本]()