환경변수는 env
;로 표시할 수 있으나, 일부 변수는 표시되지 않습니다. 예를 들어...
echo $EUID
결과가 나올 수는 있지만 1000
결과
env | grep EUID
가 나오지는 않습니다.
이 유형의 변수는 무엇입니까? 읽기 전용 환경 변수?
모든 쉘은 일부 규칙에 따라 동일한 변수를 설정합니까?
이러한 숨겨진 변수를 나열하는 방법은 무엇입니까?
답변1
이 set
명령은 내보낸 변수뿐만 아니라 모든 변수(및 함수)를 표시하므로
set | grep EUID
원하는 값이 표시됩니다. 이 명령은 내보내지 않은 모든 변수를 표시해야 합니다.
comm -23 <(set | grep '^[^=[:space:]]\+=' | sort) <(env | sort)
답변2
아니요숨겨진환경 변수. 모든 것은 또는
로 인쇄됩니다 .env
printenv
현재 하고 있는 작업은 변수 값을 인쇄하는 것이지만 EUID
변수는 내보내지지 않습니다.
$ bash -c 'declare -p EUID'
declare -ir EUID="1000"
즉, ( i
)는 정수를 의미하고 ( r
)는 읽기 전용을 의미합니다. x
단, 내보낼 때에는 ( )가 없습니다.
$ zsh -c 'typeset -p EUID'
typeset -i10 EUID=1000
즉, ( i
)는 정수를 나타내고, ( 10
)는 10을 기준으로 하는 진수(십진수)를 나타낸다.
대신에:
$ bash -c 'declare -p PATH'
declare -x PATH="…"
$ zsh -c 'typeset -p PATH'
export PATH=…