![env, setenv, 내보내기 및 사용 시기의 차이점은 무엇입니까?](https://linux55.com/image/112716/env%2C%20setenv%2C%20%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0%20%EB%B0%8F%20%EC%82%AC%EC%9A%A9%20%EC%8B%9C%EA%B8%B0%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
최근에 환경 변수를 설정하는 데 세 가지 옵션이 있다는 것을 알았습니다.
export envVar1=1
setenv envVar2=2
env envVAr3=3
다른 방법이 있으면 알려주시기 바랍니다.
언제 다른 것보다 하나를 선택해야 합니까? 가이드라인을 제안해주세요.
쉘 호환성과 관련하여 어느 것이 가장 광범위합니까(더 많은 쉘 방언을 포함)?
나는 이것을 알아 차렸다답변env
하지만 저는 선호도 가이드를 사용하여 이 질문을 확장하고 싶습니다 .
답변1
export VARIABLE_NAME='some value'
sh
POSIX 호환 셸( , dash
, 등 bash
, zsh) ksh
에서 환경 변수를 설정하는 방법 입니다. 변수에 이미 값이 있으면 export VARIABLE_NAME
값을 변경하지 않고 환경 변수로 만들 수 있습니다.
POSIX 이전 버전본 껍질이는 지원되지 않으므로 export VARIABLE_NAME='some value'
대신 사용하지 않고 사용하는 스크립트가 표시됩니다 VARIABLE_NAME='some value'; export VARIABLE_NAME
. 그러나 POSIX 이전 Bourne 쉘은 오늘날 극히 드뭅니다.
setenv VARIABLE_NAME='some value'
환경 변수 설정을 위한 csh 구문입니다. setenv
sh에는 존재하지 않으며 csh는 스크립트에서 거의 사용되지 않으며 지난 20년 동안(zsh는 더 오랫동안) 대화형 사용에서 bash를 능가했기 때문에 마주치지 않는 한 잊어버릴 수 있습니다.
이 env
명령은 다음을 제외하고는 거의 유용하지 않습니다.셰르본 라인. 인수 없이 호출하면 환경을 표시하지만 export
더 좋습니다(값의 줄바꿈과 값을 구분하는 줄바꿈을 명확하게 하기 위해 정렬되고 종종 인용됩니다). 인수를 사용하여 호출하면 추가 환경 변수를 사용하여 명령을 실행하지만 env
동일한 명령 없이도 작동합니다( VAR=value mycommand
예: set to로 실행). Shebang 라인이 유용한 이유는 조회를 수행하고 명령 이름으로 호출될 때 다른 작업을 수행하지 않기 때문입니다. 이 명령은 쉘이 가져오지 않는 유효하지 않은 이름을 가진 변수를 포함하여 환경을 표시하기 위해 몇 가지 환경 변수(인수 포함 또는 제외)만 포함된 명령을 실행하는 데 사용할 수 있습니다.mycommand
VAR
value
env VAR=value mycommand
env
PATH
env
-i
답변2
환경 변수와 같은 변수를 수정하지 않고 설정한다는 것은 VAR='asdf'
동일한 세션에서 시작한 프로그램이 이에 대해 아무것도 모르고 VAR
액세스할 수 없음을 의미합니다. 쉘 스크립트를 작성할 때 이 동작을 원합니다.
export
반면에 내보낸 변수가 현재 세션에서 생성된 하위 프로세스에 표시되도록 환경을 수정하는 bash 내장 명령입니다. 를 실행하여 동일한 결과를 얻을 수 있습니다 VAR='asdf' %program_name%
.
env
내장된 프로그램은 아니고 별도의 프로그램입니다. 표면적으로는 여러분과 똑같이 작동 VAR='asdf' %program_name%
하지만, 낮은 수준에서는 상황이 더 복잡해집니다. 먼저, env
시작하세요. 환경을 수정한 다음 지정된 매개변수를 사용하여 명령을 실행합니다. 다음을 사용하여 자신의 코드에서 동일한 동작을 달성할 수 있습니다.실행(3)시스템 호출.
setenv
export
답변에서 알 수 있듯이 csh-family 쉘에서만 가능합니다.
답변3
이 질문에 답하는 몇 가지 질문과 답변이 있습니다.
(등.)