내 /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 구성당신이 원하는 것을하십시오.