linux的命令su-啥意思
linux的命令su-啥意思详细介绍
在 Linux 中,su 命令用于切换用户身份,而 su -(或 su --login)是 su 的一个扩展用法,主要区别在于是否完全切换用户环境。以下是具体解释:
su - 的含义
su:仅切换用户身份,但 不改变当前工作目录和环境变量(如PATH、HOME等保持原用户的配置)。su -:切换用户身份的同时,加载目标用户的环境配置(包括工作目录、环境变量、shell 配置文件等),相当于以目标用户的身份重新登录。
核心区别
| 特性 | su username |
su - username |
|---|---|---|
| 工作目录 | 保持当前目录 | 切换到目标用户的主目录(cd $HOME) |
| 环境变量 | 继承原用户的配置 | 加载目标用户的 ~/.bash_profile目标用户的 ~/.bash_profile` 等配置 |
| shell 登录状态 | 非登录 shell | 登录 shell(会执行登录时的初始化脚本) |
常见用法
- 切换到
root用户(最常用)
bash-- 执行后,工作目录变为
root的主目录(/root),环境变量为root的配置。
- 执行后,工作目录变为
- 切换到指定用户
bash- username- 例如:
su - alice会切换到alice用户,并进入其主目录~/alice。
- 例如:
- 临时执行命令(不切换用户)
如果只需临时以其他用户身份执行单个命令,可使用su -c:
bash- username例如:
su - root -c "apt-get update"以 root 身份执行更新命令。
注意事项
- 权限要求:使用
su -切换到其他用户时,需要知道目标用户的密码(普通用户切换到root需知道root密码,root需知道root密码,root切换到普通用户无需密码)。 - 安全建议:日常操作中,更推荐使用
sudo代替su -,因为sudo允许以目标用户身份执行单个命令,且日志记录更安全(尤其对普通用户而言)。 - 退出切换:输入
exit或按下Ctrl+D即可返回原用户。
总结
su - 的本质是 以目标用户的身份完整登录,适用于需要完全使用目标用户环境的场景(如管理员切换到 root 进行系统级操作)。而普通 su 仅用于临时身份切换,对环境影响较小。根据具体需求选择合适的用法即可。