研发反应一个问题:使用su命令切换到root,执行php命令提示找不到该命令。
经测试,属实。不过执行一下source /etc/profile能执行php程序。
这个问题很明显是没有加载/etc/profile导致的。
生产环境是debian 9.2。为了安全限制root直接ssh登录,需要用普通用户登陆后在su。
做了如下测试:
用普通账号登录,执行echo $PATH
此时变量输出内容是正确的。
执行su,再执行echo $PATH
此时变量输出没有加载php的路径。
执行exit退出,然后执行su -,再执行echo $PATH
此时变量输出内容是正确的。
“su -”是切换账号的同时,切换后会加载账号的环境。所以环境变量是正确的。
原因清楚后,就好解决了。
解决方案1:
编辑/root/下隐含文件“.bashrc”,添加如下一句:
source /etc/profile
保存退出。
解决方案2:
编辑普通用户家目录下的文件“.bashrc”,添加如下一句:
alias su='su -"
保存退出。
解决方案3:
直接告诉研发,要用“su -”命令,别再用“su”了
哈哈哈...老夫发出拖拉机般的笑声
最后补充一句:
CentOS 7没有这个问题