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用户的工作目录。
- 本文标签: Linux
- 本文链接: http://www.365codemall.com/article/21
- 版权声明: 本文由李俊杰原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权