모든 쉘 변수를 나열하려면 어떻게해야합니까?


18

이 질문에 대한 읽기 : zsh에서 모든 환경 변수를 어떻게 나열 할 수 있습니까? , 나는 모든 쉘 변수를 어떻게 나열 할 수 있을지 궁금했다 .

또한 변수와 환경 변수 의 구별 이 zsh 이외의 쉘에 적용됩니까?

나는 주로 Bash와 Zsh에 관심이 있지만 다른 주류 쉘에서이를 수행하는 방법을 아는 것이 좋습니다.

답변:


21

모든 쉘 변수 나열

bash: 사용하십시오 set -o posix ; set. POSIX 옵션은 함수 정의와 같이 너무 많은 정보를 출력하지 않도록하기위한 것입니다. declare -p작동합니다.

zsh : 사용하다 typeset

쉘 변수 및 환경 변수

exec()-ed 하위 프로세스에 환경 변수를 사용할 수 있습니다 (사본으로 부모 프로세스가 변수를 변경하면 하위 환경이 업데이트되지 않음). 비 환경 변수는 현재 실행중인 쉘 및 fork()-ed 서브 쉘에서만 사용 가능합니다 . 이 차이점은 모든 껍질에 있습니다.

(댓글 덕분에 완성 됨)


declare -p같은 작업
Costas

질문은 여기에도 답변이 있습니다 : stackoverflow.com/questions/1305237/…
Uriel

1
set -o posixzsh에는 존재하지 않습니다. set함수 정의를 출력하지 않습니다.
vinc17

1
set -o posix대부분의 쉘에서 구문 오류입니다.
mikeserv

3
쉘 변수는 하위 프로세스에서도 사용 가능합니다. 자식 프로세스가 새 프로그램을 실행할 때 차이가납니다. 환경 변수가 함께 전달되고 exec쉘 변수는 전달 되지 않습니다.
Barmar

7

많은 대안이 있습니다 :

printenv

지정된 환경 변수의 값을 인쇄하십시오. VARIABLE을 지정하지 않으면 이름과 값 쌍을 모두 인쇄하십시오.

env

env-수정 된 환경에서 프로그램을 실행

수출

환경 변수를 설정하십시오. 환경에서 하위 프로세스로 전달 될 각 이름을 표시하십시오 .....

-p 입력으로 재사용 될 수있는 형식으로 출력을 표시합니다.

이름이 제공되지 않거나`-p '옵션이 주어지면, 내 보낸 이름 목록이 표시됩니다.

세트

쉘 변수를 얻는 데 유용합니다.

추가 정보 (정수, 내보내기)가 필요한 경우 대신 사용해야합니다

조판

내보내기 는 출력을 쉘로 즉시 다시 읽을 수 있다는 장점이 있습니다.

마지막으로

compgen -v

옵션에 따라 가능한 완료를 표시합니다.

값이나 추가 정보없이 모든 변수, 쉘 및 환경을 표시합니다. 변수 값을 찾으려면 $ VARIABLE_NAME반향 해야 합니다. 그러나 적어도 목록은 완성되었습니다. zsh가 아닌 bash에 속합니다 .


1
exportset쉘 재진입을 인용 할 때 적어도 이점은 없다 . 그리고 printenv그리고 env이러한 환경 변수로 종종이 일치 할 수 있지만, 쉘 변수에 대한 전혀 없습니다.
mikeserv

3

을 사용 하면 변수 유형과 같은 보다 많은 정보를 제공하는을 zsh사용할 수 있습니다 . 원하는에 따라 또는로 출력을 필터링 할 수 있습니다 . 환경 변수는 출력에서와 같이 표시됩니다 .typesetsetgrepsedexported

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.