su - 和 su

su 是切换到其他用户,但是不切换环境变量(比如说那些export命令查看一下,就知道两个命令的区别了)

su - 是完整的切换到一个用户环境

所以建议大家切换用户的时候,尽量使用 su -  linuxso 这样 否则可能发现某些命令执行不了

安装完oracle之后就会出现上述情况。

### su -su root 的区别 在 Linux 系统中,`su -` `su root` 是两种常见的切换用户身份的命令,但它们的行为存在显著差异。以下是两者的具体区别: #### 1. 环境变量加载 - 使用 `su root` 命令时,仅切换到 root 用户的身份,但不会加载 root 用户的完整环境变量[^1]。这意味着当前用户的环境变量将被保留,可能会影响某些依赖特定环境设置的命令执行。 - 使用 `su - root` 命令时,会加载 root 用户的完整环境变量,并切换到 root 用户的主目录(通常是 `/root`)。这包括加载 root 用户的 shell 配置文件(如 `.bashrc` `.bash_profile`),从而确保以 root 用户的完整环境执行命令。 #### 2. 当前工作目录 - 执行 `su root` 后,当前工作目录不会发生变化,仍然是执行命令时所在的目录。 - 执行 `su - root` 后,当前工作目录会被更改为 root 用户的主目录(通常是 `/root`)。 #### 3. Shell 类型 - `su root` 创建的是一个非登录 shell,它不会执行登录 shell 的初始化脚本(如 `/etc/profile` `~/.bashrc`)[^3]。 - `su - root` 创建的是一个登录 shell,会执行登录 shell 的初始化流程,包括加载系统级用户级的配置文件(如 `/etc/profile` `~/.bash_profile`)[^3]。 #### 4. 推荐使用场景 - 如果需要在当前用户环境下临时执行某些需要 root 权限的命令,可以使用 `su root`。 - 如果需要完全切换到 root 用户身份,并以 root 用户的完整环境执行命令,则推荐使用 `su - root`,因为它可以避免由于环境变量不一致而导致的问题[^1]。 #### 示例代码 以下是一个简单的示例,展示 `su root` `su - root` 的行为差异: ```bash # 切换到 root 用户,但不加载完整环境 su root # 查看当前工作目录 pwd # 切换到 root 用户并加载完整环境 su - root # 查看当前工作目录 pwd ``` ### 总结 `su root` `su - root` 的主要区别在于是否加载目标用户的完整环境变量以及是否更改当前工作目录。根据实际需求选择合适的命令可以提高工作效率并减少潜在问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值