uuutee.log

su と su - の違い

susu - の違いは下記の通り。

# ホームディレクトリと環境変数は切り替え前のユーザの値になる
su root

# ホームディレクトリと環境変数が切り替え後(root)の値になる
su - root

環境変数を比較

それぞれ printenv した結果を確認。
(amazon linux の ec2-user で検証)

su root

SUDO_USER=ec2-user
SUDO_UID=500
USERNAME=root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin
MAIL=/var/spool/mail/ec2-user
PWD=/home/ec2-user
SUDO_COMMAND=/bin/su
SUDO_GID=500

su - root

MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
PWD=/root

どちらを使うか

ユーザをスイッチするという意味では、環境変数が切り替えユーザと同じになる su - を使用するほうがよい。
su を使う場合、MAIL, PATH, PWD がもとのユーザのまま、
その他、export で設定した変数も su の場合は引き継がれるので気をつける。

参考

su コマンドでユーザーを切り替える