我们刚刚启动了新服务器,并在所有服务器上运行 CentOS。成功安装 Ruby Enterprise Edition 后,我现在想添加 REE /bin
(位于/usr/lib/ruby-enterprise/bin
)目录,使其成为服务器上的默认 Ruby 解释器。
我已尝试以下操作,仅将其添加到当前 shell 会话:
export PATH=/usr/lib/ruby-enterprise/bin:$PATH
正确的做法是什么永久将此目录添加$PATH
到全部用户? 我目前以 身份登录root
。
答案1
编辑这样的内容不是一个好主意/etc/profile
,因为每当 CentOS 发布此文件的更新时,你都会丢失所有更改。这正是这样做/etc/profile.d
的目的:
echo 'pathmunge /usr/lib/ruby-enterprise/bin' > /etc/profile.d/ree.sh
chmod +x /etc/profile.d/ree.sh
重新登录并享受(安全)更新$PATH
:
echo $PATH
/usr/lib/ruby-enterprise/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
which ruby
/usr/lib/ruby-enterprise/bin/ruby
您无需重新登录,而是可以重新加载配置文件:
. /etc/profile
这将更新$PATH
变量。
答案2
按照 fmonk 的建议后,我查看了/etc/bashrc
,发现上面写着“环境内容放在 /etc/profile 中”。我继续查看/etc/profile
,看到了以下内容:
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
[...]
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
为了解决我的问题,我只需pathmunge /usr/lib/ruby-enterprise/bin
在 if 语句下方添加即可。这解决了我的问题。
答案3
抱歉,我误解了这个问题 以下答案针对的是用户的个人资料 留下它以防它能帮助别人
修改.bash_profile
nano ~/.bash_profile
然后在文件的某处添加/修改路径,并用以下分隔:
PATH=$PATH:$HOME/bin:/your/path
export PATH
然后重新加载你的个人资料
source ~/.bash_profile
或注销并重新登录
如果你检查 PATH 它应该包括你新添加的路径
echo $PATH
答案4
您可以在.rc 文件中设置环境变量;对于 bash shell(我相信是最常见的,也是 CentOS 中的默认设置),每个用户的主目录中都有一个名为 .bashrc 的文件。
将命令 PATH=/usr/lib/ruby-enterprise/bin:$PATH 添加到此文件,为任何一个特定用户进行设置。
要为所有用户设置它(如您所说),请在 /etc/bashrc 中更改它(每个用户主目录中的默认 .bashrc 应该源此文件,但您应该仔细检查)。