답변:
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
있습니다.
env
인수없이 명령은 "수출"환경 변수와 그 값의 목록을 인쇄합니다. 이러한 변수는 하위 프로세스에 표시됩니다. 다른 많은 환경 변수는 여기에 표시되지 않으며 실행중인 쉘 내부에서만 사용됩니다 (예 : 구성).
printenv
두 이후, env
및 set
단지 환경을 출력 이외의 기능을 가지고 있습니다.
env
내보내기로 표시된 환경 변수 목록 만 인쇄합니다. 모든 변수를 인쇄하지는 않습니다.
compgen -v
쉘 변수를 인쇄합니다 (값은 아님).
compgen -e
내 보낸 변수, 즉이 셸이 시작하는 프로세스에 의해 상속되는 변수 (값은 아님)를 인쇄합니다.
셸과 내 보낸 변수의 차이점 : https://unix.stackexchange.com/questions/3507/difference-between-environment-variables-and-exported-environment-variables-in-b?rq=1
compgen -e
정확히 내가 원하는 것입니다!