我对 Linux 终端很陌生,我不太确定su
带连字符和su
不带连字符的区别是什么,例如:su - username
vs su username
. .
我查看了文档,但在那里没有提到这一点。有人可以帮我吗?
pau*_*sm4 103
"-" 和 "no hyphen" 的区别在于后者保留了你现有的环境(变量等);前者创建一个新环境(使用实际用户的设置,而不是您自己的设置)。
https://wiki.archlinux.org/index.php/Su
连字符有两个作用:
1) 通过以新用户的身份登录,从当前目录切换到新用户的主目录(例如,在 root 用户的情况下,切换到 /root)
2) 将环境变量更改为新用户的 ~/.bashrc 指定的环境变量。也就是说,如果 su 的第一个参数是连字符,则当前目录和环境将更改为新用户实际登录到新会话(而不是仅接管现有会话)时所预期的内容。
小智 8
2022 年更新:
不鼓励使用 的简写--login
。
请参阅: https: //man.archlinux.org/man/su.1#DESCRIPTION
建议始终使用 --login 选项(而不是其快捷方式 - )以避免混合环境引起的副作用。
和https://wiki.archlinux.org/title/Su:
有时您会遇到使用 su 来使用 su - 获取登录 shell,而不是 su -l/su --login。不鼓励使用这种简写,因为 - 选项可能会遇到解析限制。