2011-09-07 6 views
119

export 명령의 사용을 이해하려고합니다.UNIX 내보내기 명령

man export을 사용해 보았지만이 명령에 대한 매뉴얼이 없습니다.

아무도 나를 UNIX에서 export의 사용을 이해하는 데 도와 줄 수 있습니까?

+0

맨 페이지가 없다는 것은 매우 이상합니다. 나는 어느 쪽도 보지 않는다. – Pinocchio

답변

177

프로그램을 실행할 때 하위 프로그램은 부모로부터 환경 변수를 상속받습니다. 예를 들어 $HOME이 부모의 /root으로 설정된 경우 자식의 $HOME 변수도 /root으로 설정됩니다.

이는 내보내기 용으로 표시된 환경 변수에만 적용됩니다. 명령 줄에서 변수를

$ FOO="bar" 

과 같이 설정하면 해당 변수는 하위 프로세스에서 표시되지 않습니다. 아니 당신은 그것을 수출하지 않는 : 여기

$ export FOO="bar" 

사이의 차이를 보여주는 간단한 예입니다 :

$ export FOO 

당신은 (구식 쉬하지만) bash는 하나 하나에이 두 문장을 결합 할 수 있습니다 수출 및 비 수출 변수. 무슨 일이 일어나고 있는지 이해하려면 sh -c이 부모 쉘의 환경을 상속받는 하위 쉘 프로세스를 생성한다는 것을 알아야합니다.

$ FOO=bar 
$ sh -c 'echo $FOO' 

$ export FOO 
$ sh -c 'echo $FOO' 
bar 

참고 :가 내장 된 명령은 help export를 사용하는 쉘에 도움을 얻을 수 있습니다. 쉘 내장은 /bin/ls과 같은 독립적 인 실행 파일보다는 쉘의 일부인 명령입니다.

13

유닉스

있는 명령 ENV 설정하고, 모든 디스플레이의 printenv 환경 변수와 그 값. env 및 set은 환경 변수를 설정하는 데 사용되며 종종 쉘에 직접 통합됩니다. printenv는 변수 이름을 명령의 유일한 인수로 지정하여 단일 변수를 인쇄하는 데 사용할 수도 있습니다.

Unix에서 다음 명령을 사용할 수도 있지만 특정 쉘에 의존하는 경우가 많습니다.

export VARIABLE=value # for Bourne, bash, and related shells 
setenv VARIABLE value # for csh and related shells 

당신은

+3

StackOverflow에 오신 것을 환영합니다. 고전적인 Bourne 쉘은 다음을 요구합니다 :'VARIABLE = value; 한 번에 할당하고 수출하는 것이 아니라 '수출 가변형'을 선택하십시오.C shell의'set' 명령은 환경 변수가 아닌 쉘 변수를위한 것입니다; 'setenv'는'export'에 대응합니다. Bourne 파생 셸의'set' 명령은 내 보낸 (환경) 변수뿐만 아니라 모든 변수를 출력합니다. 역사적으로 최소한,'env' 명령은 내장 (built-in)이 아닌 쉘 (shell)과 분리되어 있습니다. 특정 명령에 대한 환경을 설정하며 쉘을 실행하지는 않습니다. –

1

export에서 this에 모습을 가질 수 환경 변수를 설정하는 데 사용됩니다. 예 :

export EDITOR=pico 

기본 텍스트 편집기를 pico 명령으로 설정합니다.

2

exportbash shell 및 기타 Bourne shell variants의 내장 명령입니다. 이 변수는 하위 프로세스로 내보내기위한 쉘 변수를 표시하는 데 사용됩니다.

관련 문제