我们刚刚启动了我们的新服务器,并且我们正在所有这些服务器上运行 CentOS。成功安装 Ruby 企业版后,我现在想添加 REE /bin
(位于/usr/lib/ruby-enterprise/bin
)目录,使其成为服务器上的默认 Ruby 解释器。
我尝试了以下方法,它只将它添加到当前的 shell 会话中:
export PATH=/usr/lib/ruby-enterprise/bin:$PATH
为所有用户永久添加此目录的正确方法是什么?我目前以.$PATH
root
我们刚刚启动了我们的新服务器,并且我们正在所有这些服务器上运行 CentOS。成功安装 Ruby 企业版后,我现在想添加 REE /bin
(位于/usr/lib/ruby-enterprise/bin
)目录,使其成为服务器上的默认 Ruby 解释器。
我尝试了以下方法,它只将它添加到当前的 shell 会话中:
export PATH=/usr/lib/ruby-enterprise/bin:$PATH
为所有用户永久添加此目录的正确方法是什么?我目前以.$PATH
root
编辑此类内容不是一个好主意
/etc/profile
,因为每当 CentOS 发布此文件的更新时,您将丢失所有更改。这正是/etc/profile.d
为了:重新登录并享受您的(安全)更新
$PATH
:您可以重新加载配置文件,而不是重新登录:
这将更新
$PATH
变量。在遵循 fmonk 的建议后,我检查了
/etc/bashrc
,我注意到它说“环境内容进入 /etc/profile。” 我继续往里看/etc/profile
,我看到了这个:为了解决我的问题,我只是
pathmunge /usr/lib/ruby-enterprise/bin
在 if 语句下面添加了。这解决了我的问题。抱歉误解了 以下问题
修改 .bash_profile
然后在文件中的某处添加/修改您的路径,由以下分隔:
然后重新加载您的个人资料
或注销并再次登录
如果您检查 PATH 它应该包括您新添加的路径
因此,我不会将环境变量放在 bashrc 中,因为它不仅违反常见约定,而且在从图形桌面环境调用终端时也会错过 bashrc 变量。
在 Redhat 上,
/etc/profile
我发现了这条评论:因此,如果您想基于用户设置环境变量,请在用户的 .bash_profile 文件中进行。
前往
.bash_profile
我阅读:结论
如果您只希望 root 查看驻留的程序,例如在 /
sbin
我会将该路径添加到 root 的.bash_profile
文件中。但是,如果您希望每个用户都看到您的盒子上安装了哪些特定于 root 的程序,我会/sbin
放入/etc/.profile
. 现在每个用户都可以使用 tab 补全来查找特定于 root 的程序并在必要时提升权限。特殊情况:SSH
当使用命令行启动 ssh 时,会启动一个交互式登录 shell。但是在这种情况下
/etc/profile
是不读取的。.bash_profile
当我在每个用户的文件中定义环境变量时,它使用 ssh。您可以在 .rc 文件中设置环境变量;对于 bash shell(我相信在 CentOS 中是最常见的,也是默认的),每个用户在他的主目录中都有一个名为 .bashrc 的文件。
将命令 PATH=/usr/lib/ruby-enterprise/bin:$PATH 添加到此文件,以便为任何特定用户设置它。
要为所有用户设置它(正如您提到的),请在 /etc/bashrc 中更改它(每个用户主目录中的默认 .bashrc 应该是该文件的来源,但您应该仔细检查)。
为什么大家都忘记了
/etc/environment
。为所有用户设置环境变量就是这个文件的用途。只需在一行中添加环境变量的名称值对。不要使用变量。/etc/环境
一旦您注销或重新启动,这将为所有用户添加目录
/usr/lib/ruby-enterprise/bin
/usr/bin
和您的 PATH 变量。/usr/local/bin
/usr/bin
并且/usr/local/bin
之前已经在我的路径上,但在我编辑此文件后由于某种原因被删除。所以添加这两个目录是安全的。