Answers:
进行这样的编辑不是一个好主意/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
变量。
在听了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语句下添加了内容。这解决了我的问题。
"$EUID" = "0"
在这种情况下意味着什么吗?
/etc/profile.d/
夹中的文件,您会发现它。而且,正如他所说,系统更新可能会撤消您的解决方案。
“交互式登录外壳程序是在成功登录后使用/ bin / login通过读取/ etc / passwd文件启动的。此外壳程序调用通常在启动时读取/ etc / profile及其等效的〜/ .bash_profile。
交互式非登录外壳程序通常使用外壳程序(例如[prompt] $ / bin / bash)在命令行中启动,或通过/ bin / su命令启动。交互式非登录外壳程序还可以从图形环境中的终端程序(例如xterm或konsole)启动。这种类型的Shell调用通常会复制父环境,然后读取用户的〜/ .bashrc文件以获取其他启动配置说明。” http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html
因此,我不会将环境变量放在bashrc中,因为它不仅违反通用约定,而且从图形桌面环境中调用终端时,您还会错过bashrc变量。
在Redhat中,/etc/profile
我发现此评论:
“系统范围内的别名和功能应该放在/ etc / bashrc中。个人环境变量和启动程序应该放在〜/ .bash_profile中。个人别名和功能应该放在〜/ .bashrc中。”
因此,如果要基于用户设置环境变量,请在用户的.bash_profile文件中进行设置。
前往.bash_profile
我读到的内容:
“个人环境变量和启动程序。
个人别名和功能应放在〜/ .bashrc中。系统范围的环境变量和启动程序位于/ etc / profile中。系统范围的别名和功能在/ etc / bashrc中。”
结论
如果只希望root用户查看驻留的程序,例如,在/中sbin
,则将该路径添加到root用户的.bash_profile
文件中。但是,如果你希望每个用户看到安装在你的盒子,我会把根什么具体方案/sbin
进入/etc/.profile
。现在,每个用户都可以使用制表符完成功能来查找根目录特定的程序,并在必要时提升权限。
特殊情况:SSH
使用命令行启动ssh时,将启动交互式登录shell。但是在这种情况下/etc/profile
不读。当我在.bash_profile
每个用户的文件中定义环境变量时,它与ssh一起使用。
您可以在.rc文件中设置环境变量。对于bash shell(我相信这是CentOS中最常见的默认设置),每个用户的主目录中都有一个名为.bashrc的文件。
将命令PATH = / usr / lib / ruby-enterprise / bin:$ PATH添加到此文件以为任何一个特定用户设置它。
要为所有用户设置该文件(如您所述),请在/ etc / bashrc中对其进行更改(每个用户主目录中的默认.bashrc文件都将源此文件,但您应仔细检查该文件)。
~/.profile
也是另一个有效的选项