我对 Linux 终端还很陌生,不太清楚su
带连字符和su
不带连字符有什么区别,例如:su - username
vs. 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 的情况。不建议使用这种简写方式,因为 - 选项可能会遇到解析限制。