답변:
프로그램을 실행할 때 자식 프로그램은 부모로부터 환경 변수를 상속합니다. 예를 들어 부모에서 $HOME
로 설정된 경우 /root
자식 $HOME
변수도로 설정됩니다 /root
.
이것은 내보내기로 표시된 환경 변수에만 적용됩니다. 명령 행에서 변수를 다음과 같이 설정하면
$ FOO="bar"
해당 변수는 자식 프로세스에서 보이지 않습니다. 수출하지 않는 한 :
$ export FOO
이 두 문장을 bash에서 하나의 문장으로 결합 할 수 있습니다 (그러나 구식 sh에서는 아닙니다).
$ export FOO="bar"
다음은 내 보낸 변수와 내 보내지 않은 변수의 차이점을 보여주는 간단한 예입니다. 무슨 일이 일어나고 있는지 이해하려면 sh -c
부모 셸 환경을 상속하는 자식 셸 프로세스를 만듭니다.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
참고 : 쉘 내장 명령에 대한 도움말을 보려면을 사용하십시오 help export
. 셸 내장은 같은 독립 실행 파일이 아닌 셸의 일부인 명령입니다 /bin/ls
.
유닉스
env, set 및 printenv 명령은 모든 환경 변수와 해당 값을 표시합니다. env 및 set은 환경 변수를 설정하는 데에도 사용되며 종종 쉘에 직접 통합됩니다. printenv를 사용하여 해당 변수 이름을 명령의 유일한 인수로 제공하여 단일 변수를 인쇄 할 수도 있습니다.
유닉스에서는 다음 명령을 사용할 수도 있지만 종종 특정 쉘에 의존합니다.
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells
당신은 한 번 봐 가질 수 이 시를
VARIABLE=value; export VARIABLE
한 번에 할당하고 내보내는 대신 다음을 요구합니다 . set
C 쉘 의 명령은 환경 변수가 아닌 쉘 변수를위한 것입니다. setenv
의 대응입니다 export
. set
Bourne 파생 쉘 의 명령은 내 보낸 (환경) 변수뿐만 아니라 모든 변수를 인쇄합니다. 역사적으로, env
명령은 내장 (built-in)이 아닌 쉘 (shell)과 분리되어 있지만, 쉽게 내장 (built-in)으로 만들 수 있습니다. 특정 명령에 대한 환경을 설정합니다 (명령을 실행하는 쉘이 아님).
export
bash
쉘 및 기타 Bourne 쉘 변형에 내장 된 명령입니다 . 자식 프로세스로 내보낼 쉘 변수를 표시하는 데 사용됩니다.