Linux bash 터미널에서 현재 정의 된 모든 환경 변수 목록을 보려면 어떻게합니까?


답변:


32

TL; DR : 사용(set -o posix ; set)


Bash 매뉴얼에 따르면 내장 명령을 사용하여set 설정된 모든 환경 변수를 표시 할 수 있습니다 . 이 set명령은 모든 기능의 정의도 표시합니다. 함수가 아닌 변수 만 보려면 set 명령을 실행하기 전에 POSIX 모드를 켤 수 있습니다. 가장 쉬운 방법은을 사용하는 set -o posix것이지만을 사용하여 끌 때까지 POSIX 모드를 유지합니다 set +o posix.

따라서 다음 명령은 현재 쉘의 POSIX 준수에 영향을주지 않으면 서 서브 쉘을 사용하여 정의 된 모든 환경 변수를 표시합니다.

(set -o posix ; set)

@RedGrittyBrick 및 @iglvzx는 env이 명령 사용을 제안 했지만이 명령은 환경 변수의 전체 목록을 제공하지는 않습니다. env내보내기로 표시된 변수 만 표시합니다. 의 출력을 비교 env | sort하고 export -p당신은 무슨 뜻인지 볼 수 있습니다. comm -23 <(set -o posix; set) <(env|sort)내 보내지 않는 환경 변수를 확인하려는 경우 실행할 수 있습니다 .

불일치의 이유 는 쉘 내장 명령이 env아닌 별도의 실행 파일이기 때문 set입니다. Bash 매뉴얼에 따르면 , 쉘 내장 명령 또는 기능이 아닌 명령이 실행될 때 Bash에서 내보내기로 표시된 환경 변수 만 수신합니다 . 내 보내지 않은 변수가 많이 있습니다. 따라서 쉘이 정의한 모든 변수를 보려면 set매뉴얼에 설명 된대로 명령을 사용해야합니다 .

다음 명령을 사용하여이 동작을 쉽게 테스트 할 수 있습니다.

MY_TEST_VARIABLE="This is my test variable."
set | grep MY_TEST_VARIABLE
env | grep MY_TEST_VARIABLE

그렇지 않은 set동안 출력 을 제공 한다는 것을 알 수 env있습니다.


24

env인수없이 명령은 "수출"환경 변수와 그 값의 목록을 인쇄합니다. 이러한 변수는 하위 프로세스에 표시됩니다. 다른 많은 환경 변수는 여기에 표시되지 않으며 실행중인 쉘 내부에서만 사용됩니다 (예 : 구성).


10
내가 선호하는 printenv두 이후, envset단지 환경을 출력 이외의 기능을 가지고 있습니다.
iglvzx

3
env내보내기로 표시된 환경 변수 목록 만 인쇄합니다. 모든 변수를 인쇄하지는 않습니다.
불가사리

4
@Starfish는 옳습니다. 이것은 허용되는 답변이 매우 잘못되었음을 의미합니다. 내 보낸 변수 만 나열하도록 편집했습니다.
Volker Siegel

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.