이 문제에 대한 읽기: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' ' '