CentOS 7を実行しているDellサーバーがあります。 Dellの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
変数はシェルによって展開され、その後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