![更改所有用户的 PATH 环境变量。(Ubuntu)](https://linux22.com/image/541800/%E6%9B%B4%E6%94%B9%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%E7%9A%84%20PATH%20%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E3%80%82%EF%BC%88Ubuntu%EF%BC%89.png)
我最近在 Ubuntu 8.04 服务器上编译了 Ruby Enterprise Edition (REE)。
我想更新我的 PATH 以确保这个新版本的 Ruby(在 中找到/opt/ruby_ee/bin
)取代了 中的旧版本/usr/local/bin
。 (但我仍然希望保留旧版本。)
我希望这些 PATH 更改能够影响所有用户和 crontab。
尝试的解决方案 #1:
REE 文档建议将 REE bin 文件夹放在全局 PATH 的开头/etc/environment
。我将此文件中的 PATH 更改为:
PATH="/opt/ruby_ee/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
PATH
这对我一点影响都没有。
尝试的解决方案 #2:
接下来我关注这些说明/etc/login.defs
并更新了和中的 PATH 设置/etc/crontab
。(我没有更改/etc/sudoers
。)
PATH
即使注销并重新启动服务器后,这也不会影响我。
其他信息:
- 我似乎也有同样的情况此处描述的问题。
- 我正在使用命令“
echo $PATH
”和“ruby -v
”进行测试。 - 我的 shell 是 bash。我的 shell
.bashrc
不会覆盖我的 PATH。 - 是的,我听说过 Ruby 版本管理器项目。;)
答案1
您是否尝试过更改默认的 bashrc?它应该位于 /etc/bashrc 或 /etc/bash.bashrc(我认为它是 Ubuntu 中的第二个)。然后在您的主目录中,确保您的 .bash_profile 包含:
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
这将确保系统范围内定义的变量被读入用户的 shell。默认情况下,此 if 语句应包含在您创建的 .bash_profile 中adduser
(我知道它在 RHEL 中)。
答案2
需要说明的是,/etc/environment
只有您打开新 shell/再次登录后才会加载。
您是否注销并重新登录?