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

관련 정보