"sudo sh"가 profile.d 스크립트를 소스하지 않는 이유

"sudo sh"가 profile.d 스크립트를 소스하지 않는 이유

CentOS 7을 설치했습니다. 여기서 /bin/sh는 bash에 대한 심볼릭 링크입니다. 그러나 sudo를 사용할 때는 다르게 동작합니다. 예를 들어 "sudo sh"를 사용하면 다음과 같습니다.

[[email protected] ~]$ sudo sh
sh-4.2# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin

"sudo bash"를 사용하십시오:

[[email protected] ~]$ sudo bash
[[email protected] centos]# echo $PATH
/opt/puppetlabs/puppet/bin:/sbin:/bin:/usr/sbin:/usr/bin

추가 PATH 요소는 /etc/profile.d/-script에서 제공됩니다. 왜 "sudo sh"가 표시되지 않습니까?

답변1

~/.bashrcSource /etc/bashrc, 그 다음 source /etc/profile.d/*(그러나 /etc/profile?는 아님). 이 혼란스러운 동작이 Redhat 파생 제품에만 해당되는지는 모르겠습니다.

~/.bashrc비로그인 쉘로 실행될 때 bash에 의해 획득됩니다. (로그인 쉘로 실행하면,배쉬 문서~./bashrc)에서 수동 소싱을 확인하는 것이 좋습니다 ~/.bash_profile.

하지만 실행해 보면 sh소스 ~/.bashrc가 없습니다. sh로그인 셸로 실행하지 않으면 아무 것도 가져오지 않습니다.

이러한 혼란을 피할 수 있는 한 가지 방법은 sudo -i원하는 경우 로그인 셸을 실행하는 것입니다. 사용되는 쉘은 대상 사용자의 쉘(즉, root기본적으로)을 기반으로 선택됩니다.

관련 정보