숨겨진 환경 변수를 인쇄하는 방법은 무엇입니까?

숨겨진 환경 변수를 인쇄하는 방법은 무엇입니까?

환경변수는 env;로 표시할 수 있으나, 일부 변수는 표시되지 않습니다. 예를 들어...

echo $EUID결과가 나올 수는 있지만 1000결과 env | grep EUID가 나오지는 않습니다.

이 유형의 변수는 무엇입니까? 읽기 전용 환경 변수?

모든 쉘은 일부 규칙에 따라 동일한 변수를 설정합니까?

이러한 숨겨진 변수를 나열하는 방법은 무엇입니까?

답변1

set명령은 내보낸 변수뿐만 아니라 모든 변수(및 함수)를 표시하므로

set | grep EUID

원하는 값이 표시됩니다. 이 명령은 내보내지 않은 모든 변수를 표시해야 합니다.

comm -23 <(set | grep '^[^=[:space:]]\+=' | sort) <(env | sort)

답변2

아니요숨겨진환경 변수. 모든 것은 또는
로 인쇄됩니다 .envprintenv

현재 하고 있는 작업은 변수 값을 인쇄하는 것이지만 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=…

관련 정보