CentOS 7 PATH 被 /etc/bashrc 覆盖

CentOS 7 PATH 被 /etc/bashrc 覆盖

我有一台运行 CentOS 7 的戴尔服务器。我安装了戴尔的 iDRAC 远程访问工具,它重置了我的 PATH 变量。

更多细节:我有一个脚本,/etc/profiles.d其中向 PATH 添加了一些内容

DELL iDRACTools 安装脚本与 sudo 一样运行,并具有以下行:

echo "PATH=$PATH:/opt/dell/srvadmin/sbin" >> /etc/bashrc

但看起来当这个安装脚本实际运行时,PATH 变量没有我之前附加的值。最终结果是 PATH 没有我的/etc/profiles.d脚本中设置的所有值。

为了解决这个问题,我只需从 中删除该行/etc/bashrc。但是,根据我的理解,我想知道为什么会发生这种情况。

答案1

如果路径字符串位于双引号中,则该$PATH变量将由 shell 扩展,然后echoed 并附加到/etc/bashrc.这意味着PATH设置为$PATH运行安装脚本时的实际值加上/opt/dell/srvadmin/sbin而不是文字$PATH:/opt/dell/srvadmin/sbin

我不知道这是有意为之还是一个错误。你可以用以下内容替换该行

PATH=$PATH:/opt/dell/srvadmin/sbin

或将/etc/bashrc脚本中的双引号更改为单引号以避免$PATH扩展:

echo 'PATH=$PATH:/opt/dell/srvadmin/sbin' >> /etc/bashrc

相关内容