![숨겨진 환경 변수를 인쇄하는 방법은 무엇입니까?](https://linux55.com/image/29968/%EC%88%A8%EA%B2%A8%EC%A7%84%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
환경변수는 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=…