为什么同一个用户在Linux服务器上有不同的PATH值?

为什么同一个用户在Linux服务器上有不同的PATH值?

我以“guest”用户身份通过​​ SSH 登录到我的 Linux 服务器(Redhat AS4),然后运行命令echo $PATH,输出是/usr/local/bin:/bin:/usr/bin

但是,当我运行命令su - guest切换到同一个用户,然后运行命令时echo $PATH,输出变成/usr/bin:/bin:/usr/local/bin

为什么同一个用户在 Linux 服务器上的 PATH 值不同?这让我得到了不同的 Python 版本,我不知道是什么导致了这个问题。

答案1

尝试使用中描述的技术进行调试我的答案在超级用户上,使用

debug_msg "running ~/.bashrc ($0), PATH = '$PATH'"

/etc/bashrc、/etc/profile 等也类似。

答案2

检查 /etc/login.def 中的字段 ENV_SUPATH 和 ENV_PATH

为了良好的脚本编写实践,不要依赖 PATH 变量来执行命令,因为它具有歧义。

答案3

两种情况下,所用的脚本(对 PATH 进行不同的操作)是不同的。
由于您使用了该-选项,su因此应该使用登录脚本,而不ssh应该使用。

我不知道你到底想要哪种行为,但也许你可以检查一下su 选项(例如 -m,--preserve-environment:不重置环境变量)有帮助吗?

答案4

来自 su 手册页

su is used to become another user during a login session. Invoked with-
       out a username, su defaults to becoming the super  user.  The  optional
       argument  -  may be used to provide an environment similiar to what the
       user would expect had the user logged in directly.

因此你总是会在“su”和“su -”上获得不同的环境设置

相关内容