UNIX "set" 명령이 환경 변수만 인쇄하도록 만드는 방법

UNIX "set" 명령이 환경 변수만 인쇄하도록 만드는 방법

set나는 환경 설정 목록만 나열하는 bash 명령에 익숙합니다 . PATH 등.

그러나 방금 설정한 Ubuntu 시스템에서는 set다음과 같은 많은 기능을 포함하여 2000줄의 텍스트를 덤프합니다.

dequote () 
{ 
    eval printf %s "$1" 2> /dev/null
}

환경 변수만 인쇄하려면 어떻게 해야 합니까?

답변1

기본적 set으로쉘 변수, 환경 변수뿐만 아니라. 함수 에서는 bash변수의 일부로 간주됩니다. 보다https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference.

env또는를 사용하면 printenv다음이 표시됩니다.환경하위 프로세스로 내보내집니다.필연적으로귀하의 환경과 동일합니다 bash.

$ foo=1
$ printenv foo
$ export foo
$ printenv foo
1

bash declaretypeset내장 기능은 모든 유형의 변수를 나열하고 함수를 생략할 수 있습니다.

declare -F

이들의 출력은 쉘 스크립트에서 상태를 다시 생성하는 데 적합한 형식이므로 약간 장황하지만 버전에 따라 배열, 정수 및 기타 유형을 구별할 수 있습니다. 의 출력도 참조하세요 export -p.

그리고https://stackoverflow.com/questions/1305237/how-to-list-variables-declared-in-script-in-bash bash에게 POSIX 모드를 사용하도록 지시할 수 있으며 set"올바르게" 작동합니다.

( set -o posix ; set ) 

이는 하위 쉘에서 실행되므로 실행 중인 쉘을 변경하지 않으며 아직 상속된 환경으로 내보내지지 않은 변수를 올바르게 선택합니다.

답변2

모든 환경 변수를 나열하려면 를 입력하면 됩니다 env.

관련 정보