시스템 환경 변수가 sudo에 표시되지 않습니다.

시스템 환경 변수가 sudo에 표시되지 않습니다.

내 /etc/environment 파일에는 다음 줄이 있습니다.

BROKER_URL=tcp://xxx.30.8.163:61616

나는 이것을 실행하고 다음을 얻습니다.

$ set|grep BROKER_URL
BROKER_URL=tcp://xxx.30.8.163:61616

그런 다음 다음을 실행합니다.

$ sudo bash
# set|grep BROKER_URL
# 

이는 시스템 전체 환경 변수여야 합니다. 왜 내 sudo 쉘에 표시되지 않습니까?

답변1

/etc/environment파일입니다PAM에서 사용됨, 이는 로그인을 통해 처리되지만 sudo bash그렇게 하지 않음을 의미하며 (에서 man sudoers):

명령 환경

환경 변수는 프로그램 동작에 영향을 미칠 수 있으므로 sudoer는 실행 중인 명령에 의해 상속되는 사용자 환경의 변수를 제한하는 방법을 제공합니다. sudoers에는 환경 변수를 처리하는 두 가지 방법이 있습니다.

기본적으로 env_reset 옵션은 활성화되어 있습니다. 이로 인해 명령이 새로운 최소 환경에서 실행됩니다. AIX(그리고리눅스 시스템아니요폴리아크릴아미드), /etc/environment 파일의 내용을 사용하여 환경이 초기화됩니다.

대부분의 GNU/Linux 시스템은 PAM을 사용합니다. sudo -i이 문제를 해결하려면 로그인 셸을 사용해 보세요 . 그러나 "로그인 쉘"은 bash가 자신을 호출하는 방식을 나타내며 source 를 포함하지 않고 /etc/environment실제로 PAM을 통해 로그인하지 않기 때문에 여전히 작동하지 않을 수 있습니다.

최선의 선택은 다음과 같습니다.sudo 구성당신이 원하는 것을하십시오.

관련 정보