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 declare
및 typeset
내장 기능은 모든 유형의 변수를 나열하고 함수를 생략할 수 있습니다.
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
.