su 和 su - 的区别

问题场景: 一个用root 用户启动的项目运行了好久,突然停了,我先登录用户A,然后su root ,在启动项目,程序运行过程中 报
 -bash: ansible: command not found,命令找不到,也就是没有环境变量

第一步 验证ansible 是否真的不能运行

第二步 查找ansible 所在的位置

        whereis ansible

   ansible: /etc/ansible /usr/local/bin/ansible

第三步 ansible 应该就在/usr/local/bin/目录下,查看有没有将该环境变量添加到环境变量中

     echo $PATH

环境变量中的确没有/usr/local/bin

 第四步 将该目录添加到环境变量中去,正好问了一下同事,同事说不应该呀,前几天还有环境变量,怎么会突然没有环境变量了,他然后他 执行

    su - root

    ansible

可以正常执行

然后查看环境变量

echo $PATH

可以看到/usr/local/bin 已经在环境变量中

su root 和su - root 同样都是切换到root 用户,竟然通过echo $PATH 查看到的环境变量不一样,通过查资料发下

su 和su - 主要有以下不同:

    1 su root 只是切换到root 身份,具有了root权限,环境变量分为用户环境变量和系统环境变量,当前的用户环境变量仍然为 之前的用户环境变量,而非root 用户的环境变量。 su - root ,不仅切换到root 身份,具有了root权限,用户的环境变量也为root用户的环境变量。

   2 su root 当前的工作目录仍然为原来用户的工作目录  ,su - root 当前的工作目录将会切换为root用户的工作目录。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

www.365codemall.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值