CentOS 7 PATHは/etc/bashrcによって上書きされます。

CentOS 7 PATHは/etc/bashrcによって上書きされます。

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変数はシェルによって展開され、その後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

関連情報