답변:
export VARIABLE_NAME='some value'
어떤 POSIX 호환 쉘 (의 환경 변수를 설정하는 방법이며 sh
, dash
, bash
, ksh
, 등; 또한 zsh을). 변수에 이미 값이 있으면 값 export VARIABLE_NAME
을 변경하지 않고 환경 변수로 만들 수 있습니다 .
POSIX 이전 Bourne 쉘 은이를 지원하지 않으므로 대신 피하고 export VARIABLE_NAME='some value'
사용 VARIABLE_NAME='some value'; export VARIABLE_NAME
하는 스크립트가 표시 됩니다. 그러나 POSIX 이전 Bourne 쉘은 오늘날 매우 드 rare니다.
setenv VARIABLE_NAME='some value'
환경 변수를 설정하는 csh 구문입니다. setenv
sh에는 존재하지 않으며 csh는 스크립트에서 거의 사용되지 않으며 지난 20 년 동안 대화식으로 사용하기 위해 bash (및 zsh는 훨씬 더 길다)를 넘어 섰으므로 접하지 않는 한 잊어 버릴 수 있습니다.
이 env
명령은 shebang 행을 제외하고는 거의 유용하지 않습니다 . 인수없이 호출하면 환경이 표시되지만 export
더 잘 수행됩니다 (정렬되고 종종 값을 구분하는 줄 바꿈에서 값의 줄 바꿈을 명확하게 인용합니다). 인수로 호출 할 때, 추가 환경 변수로 명령을 실행되지만없이 같은 명령은 env
또한 (작업 VAR=value mycommand
실행을 mycommand
함께 VAR
하도록 설정 value
처럼 env VAR=value mycommand
). env
shebang 행에서 유용한 이유 는 PATH
검색 을 수행 하고 명령 이름으로 호출 될 때 다른 작업을 수행하지 않기 때문입니다. 이 env
명령은 몇 가지 환경 변수만으로 명령을 실행하는 데 유용 할 수 있습니다.-i
또는 셸에서 가져 오지 않은 잘못된 이름의 변수를 포함하여 환경을 표시하는 매개 변수가없는 경우.
같은 변수를 설정하면 VAR='asdf'
환경이 수정되지 않습니다. 즉, 동일한 세션에서 실행하는 프로그램은 그에 대해 아무것도 알지 VAR
못하고 액세스 할 수 없습니다. 쉘 스크립트를 작성할 때이 동작을 원합니다.
export
반면에, 환경을 수정하여 현재 세션에서 생성 된 자식 프로세스에 대해 내 보낸 변수를 볼 수있는 bash 내장입니다. 을 실행하여 동일한 결과를 얻을 수 있습니다 VAR='asdf' %program_name%
.
env
내장 된 것이 아니라 프로그램 자체입니다. 표면적으로는 당신과 똑같이 작동 VAR='asdf' %program_name%
하지만, 낮은 수준에서는 상황이 조금 더 복잡해집니다. 먼저, env
시작됩니다. 환경을 수정 한 다음 주어진 인수로 명령을 실행합니다. exec (3) 시스템 호출 을 사용하여 자신의 코드에서 달성 할 수있는 것과 동일한 동작 입니다.
setenv
그냥 export
당신의 대답에 명시된 바와 같이, CSH-가족 껍질에.
이에 대한 답변이있는 몇 가지 질문이 있습니다.
(기타.)
VAR=asdf
환경에있는 경우 환경을 업데이트VAR
합니다. (이것은 원래 Bourne 쉘에서는 사실이 아니 었습니다.)