모든 쉘 변수를 어떻게 나열할 수 있습니까?

모든 쉘 변수를 어떻게 나열할 수 있습니까?

이 문제에 대한 읽기:zsh에서 모든 환경 변수를 나열하는 방법은 무엇입니까?, 알고 싶습니다. 어떻게 모두 나열할 수 있나요?쉘 변수?

또한 둘 사이에 차이가 있나요?껍데기가변 합계환경변수는 zsh 이외의 쉘에서 작동합니까?

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

답변1

모든 쉘 변수 나열

bash: 사용 set -o posix ; set. 이 posix옵션은 기능 정의와 같은 너무 많은 정보가 인쇄되는 것을 방지합니다. declare -p또한 작동합니다.

zsh: 사용 typeset.

쉘 변수와 환경 변수

환경 변수는 exec()-ed 하위 프로세스에서 사용할 수 있습니다(사본으로, 상위 프로세스가 변수를 변경하면 하위 환경이 업데이트되지 않습니다). 비환경 변수는 현재 실행 중인 쉘 및 -ed 하위 쉘에만 적용됩니다 fork(). 이러한 구별은 모든 쉘에 존재합니다.

답변2

많은 대안이 있습니다:

인쇄환경

지정된 환경 변수의 값을 인쇄합니다. VARIABLE을 지정하지 않으면 모든 변수 이름과 값 쌍이 인쇄됩니다.

환경

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

출구

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

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

이름이 제공되지 않거나 "-p" 옵션이 제공되면 내보내기 이름 목록이 표시됩니다.

놓다

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

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

조판

출구장점 중 하나는 출력을 즉시 쉘로 다시 읽을 수 있다는 것입니다.

마지막으로,

Compgen-v

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

해당 값이나 추가 정보 없이 모든 변수, 셸 및 환경을 표시합니다. 당신은해야$VARIABLE_NAME을 에코합니다.변수 값을 찾습니다. 그러나 적어도 목록은 완전합니다. 그것은 속한다세게 때리다, 아니요다루기 힘든.

답변3

zsh를 사용하면 변수 유형과 같은 typeset더 많은 정보를 제공할 수 있습니다 . set필요에 따라 grep출력을 계속 사용하거나 필터링 할 수 있습니다. 환경 변수는 출력에 sed표시됩니다 .exported

답변4

변수의 값이 아닌 변수만 나열하면 됩니다. 이를 위해 나는

env | awk -F '=' '{ print $1 }'

모두 한 줄에 넣어보세요

env | awk -F '=' '{ print $1 }' | tr '\n' ' '

관련 정보