"sudo -s env" 대 "sudo -i env"

"sudo -s env" 대 "sudo -i env"

sudo -s printenv PATH그리고 sudo -i printenv PATH다른 결과를 보여줍니다.

sudo -s printenv PATH인쇄는 와 동일합니다 sudo printenv PATH.

매뉴얼 페이지에 따르면 -i옵션 소스는 PATH 변수를 설정합니다.

이는 쉘이 .profile, .bash_profile 또는 .login과 같은 로그인별 리소스 파일을 읽는다는 것을 의미합니다.

옵션에 관해서는 다음과 같이 -s말합니다.

SHELL 환경 변수(설정된 경우)로 지정된 쉘 또는 호출하는 사용자의 비밀번호 데이터베이스 항목으로 지정된 쉘을 실행합니다. 명령이 지정되면 쉘의 -c 옵션을 통해 실행할 수 있도록 쉘에 전달됩니다. 명령이 지정되지 않으면 대화형 쉘이 실행됩니다.

Run the shell specified by the SHELL environment variable if it is set 명령을 실행할 때 bash 구성 파일을 사용할 수 있다는 의미 인가요 sudo -s?

sudo -s동일한 환경 변수가 필요 sudo -i하지만 디렉터리가 변경되기 때문에 그럴 수 없습니다 sudo -i.


편집하다:

/etc/profile.d/ENV_FILE

if ! echo ${PATH} | /bin/grep -q /usr/customized/bin ; then
        PATH=/usr/customized/bin:${PATH}
fi
if ! echo ${PATH} | /bin/grep -q /usr/customized/sbin ; then
        if [ `/usr/bin/id -u` = 0 ] ; then
                PATH=/usr/customized/sbin:${PATH}
        fi
fi

위 파일을 읽으면 루트만 경로를 얻을 수 있습니다 sbin.

그리고 env 파일은 clsuter에 배포되므로 env 파일을 건드리는 것은 합리적이지 않은 것 같습니다.

sudo -i그렇기 때문에 루트 사용자로 위의 환경 파일을 읽는 환경 변수를 얻어야 합니다 .

관련 정보