이 질문에 대한 읽기 : zsh에서 모든 환경 변수를 어떻게 나열 할 수 있습니까? , 나는 모든 쉘 변수를 어떻게 나열 할 수 있을지 궁금했다 .
또한 쉘 변수와 환경 변수 의 구별 이 zsh 이외의 쉘에 적용됩니까?
나는 주로 Bash와 Zsh에 관심이 있지만 다른 주류 쉘에서이를 수행하는 방법을 아는 것이 좋습니다.
이 질문에 대한 읽기 : zsh에서 모든 환경 변수를 어떻게 나열 할 수 있습니까? , 나는 모든 쉘 변수를 어떻게 나열 할 수 있을지 궁금했다 .
또한 쉘 변수와 환경 변수 의 구별 이 zsh 이외의 쉘에 적용됩니까?
나는 주로 Bash와 Zsh에 관심이 있지만 다른 주류 쉘에서이를 수행하는 방법을 아는 것이 좋습니다.
답변:
bash
: 사용하십시오 set -o posix ; set
. POSIX 옵션은 함수 정의와 같이 너무 많은 정보를 출력하지 않도록하기위한 것입니다. declare -p
작동합니다.
zsh
: 사용하다 typeset
exec()
-ed 하위 프로세스에 환경 변수를 사용할 수 있습니다 (사본으로 부모 프로세스가 변수를 변경하면 하위 환경이 업데이트되지 않음). 비 환경 변수는 현재 실행중인 쉘 및 fork()
-ed 서브 쉘에서만 사용 가능합니다 . 이 차이점은 모든 껍질에 있습니다.
(댓글 덕분에 완성 됨)
set -o posix
zsh에는 존재하지 않습니다. set
함수 정의를 출력하지 않습니다.
set -o posix
대부분의 쉘에서 구문 오류입니다.
exec
쉘 변수는 전달 되지 않습니다.
많은 대안이 있습니다 :
printenv
지정된 환경 변수의 값을 인쇄하십시오. VARIABLE을 지정하지 않으면 이름과 값 쌍을 모두 인쇄하십시오.
env
env-수정 된 환경에서 프로그램을 실행
수출
환경 변수를 설정하십시오. 환경에서 하위 프로세스로 전달 될 각 이름을 표시하십시오 .....
-p 입력으로 재사용 될 수있는 형식으로 출력을 표시합니다.
이름이 제공되지 않거나`-p '옵션이 주어지면, 내 보낸 이름 목록이 표시됩니다.
세트
쉘 변수를 얻는 데 유용합니다.
추가 정보 (정수, 내보내기)가 필요한 경우 대신 사용해야합니다
조판
내보내기 는 출력을 쉘로 즉시 다시 읽을 수 있다는 장점이 있습니다.
마지막으로
compgen -v
옵션에 따라 가능한 완료를 표시합니다.
값이나 추가 정보없이 모든 변수, 쉘 및 환경을 표시합니다. 변수 값을 찾으려면 $ VARIABLE_NAME 을 반향 해야 합니다. 그러나 적어도 목록은 완성되었습니다. zsh가 아닌 bash에 속합니다 .
export
set
쉘 재진입을 인용 할 때 적어도 이점은 없다 . 그리고 printenv
그리고 env
이러한 환경 변수로 종종이 일치 할 수 있지만, 쉘 변수에 대한 전혀 없습니다.
declare -p
같은 작업