我有一台运行 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 扩展,然后echo
ed 并附加到/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