
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