带连字符和不带连字符的“su”有什么区别?

带连字符和不带连字符的“su”有什么区别?

我对 Linux 终端还很陌生,不太清楚su带连字符和su不带连字符有什么区别,例如:su - usernamevs. su username

我看了进入文档但那里没有提到这一点。有人能帮我吗?

答案1

“-”和“无连字符”的区别在于后者保持您现有的环境(变量等);前者创建一个新环境(使用实际用户的设置,而不是您自己的设置)。

https://wiki.archlinux.org/index.php/Su

连字符有两个作用:

1)以新用户身份登录,从当前目录切换到新用户的主目录(例如,对于 root 用户,则切换到 /root)

2) 将环境变量更改为新用户的环境变量,由其 ~/.bashrc 指定。也就是说,如果 su 的第一个参数是连字符,则当前目录和环境将更改为新用户实际登录到新会话(而不是接管现有会话)时所期望的状态。

答案2

2022 年更新:

不鼓励使用 的简写--login

看:https://man.archlinux.org/man/su.1#DESCRIPTION

建议始终使用 --login 选项(而不是其快捷方式 -)以避免混合环境引起的副作用。

https://wiki.archlinux.org/title/Su

有时您会遇到使用 su - 而不是 su -l/su --login 来获取登录 shell 的情况。不建议使用这种简写方式,因为 - 选项可能会遇到解析限制。

相关内容