よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

"su"と"su - "の違い

こんなことも知らなかったのかという意味合いで記事にしときます。

目次

特に意識していなかった"-“の有無

suコマンドの説明は今更不要ですが、"-“の有無について意識していませんでした。 「”-“はつけるものだ」くらいに思ってました。
たまに”-“付け忘れた時に、カレントディレクトリのままになっているので、「”-“無しはユーザーのホームディレクトリに移動しない」と決めつけてました。
しかし少し調べてみると、”-“の有無についてゴロゴロ解説が出てきました。
どうやら”-“無しの場合、現在の環境変数を引き継ぐ挙動を取る事を、本日初めて知りました。

確認してみる

envで確認してみます。まずは一般ユーザーです。

[unknown@centos01 c]$ env
XDG_SESSION_ID=4828
HOSTNAME=centos01.unknownengineer.com
TERM=screen
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.1.3 58694 22
SSH_TTY=/dev/pts/0
USER=unknown
LS_COLORS=略
LD_LIBRARY_PATH=/home/unknown/local/lib
TMUX=/tmp/tmux-1001/default,17918,0
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/unknown/.local/bin:/home/unknown/bin:/home/unknown/.local/bin:/home/unknown/bin
MAIL=/var/spool/mail/unknown
PWD=/home/unknown/c
LANG=ja_JP.utf8
TMUX_PANE=%8
HISTCONTROL=ignoredups
SHLVL=2
HOME=/home/unknown
LOGNAME=unknown
SSH_CONNECTION=10.8.0.6 64730 192.168.1.12 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/1001
_=/usr/bin/env

次は"-“なしの場合。確かに環境変数引き継いでますね。但し、よく見るとHOMEだけは/rootに変更されてます。

[root@centos01 c]# env
XDG_SESSION_ID=4828
HOSTNAME=centos01.unknownengineer.com
SHELL=/bin/bash
TERM=screen
HISTSIZE=50000
SSH_CLIENT=192.168.1.3 58694 22
SSH_TTY=/dev/pts/0
USER=unknown
LS_COLORS=略
TMUX=/tmp/tmux-1001/default,17918,0
MAIL=/var/spool/mail/unknown
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/unknown/.local/bin:/home/unknown/bin:/home/unknown/.local/bin:/home/unknown/bin
PWD=/home/unknown/c
LANG=ja_JP.utf8
TMUX_PANE=%8
HISTCONTROL=ignoredups
HOME=/root
SHLVL=3
LOGNAME=unknown
SSH_CONNECTION=10.8.0.6 64730 192.168.1.19 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/1001
_=/usr/bin/env

最後に"-“有りの場合。こちらは環境変数が引き継がれていません。

[root@centos01 ~]# env
XDG_SESSION_ID=4828
HOSTNAME=centos01.unknownengineer.com
SHELL=/bin/bash
TERM=screen
HISTSIZE=50000
USER=root
LS_COLORS=略
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=ja_JP.utf8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
_=/bin/env

ざっくりですが、こんな感じ。