Bash - 쉘 및 환경 변수

Bash - 쉘 및 환경 변수

쉘 변수와 환경 변수에 대한 혼란을 명확히하고 싶습니다. 쉘 변수가 있고 이를 환경 변수로 설정하는 다음 테스트를 수행 abc했습니다 export.

$ 
$ abc="shell var"
$ env | grep abc
$ echo $abc
shell var
$ export abc="env var"
$ env | grep abc
abc=env var
$ echo $abc
env var
$ unset abc
$ env | grep abc
$ echo $abc
$ 

내보내기가 완료된 후 echo $abc.

질문:

  • 내보내기는 abc변수를 셸에서 환경으로 이동합니까, 아니면 환경에 복사본을 만들고 새 값을 할당합니까?

  • 두 번째 작업이 echo완료 되면 환경에 있는지 확인한 후 인쇄 export합니까 , 아니면 쉘에서 완전히 제거되고 환경에만 존재하므로 해당 값이 인쇄됩니까?echoabcabcecho

답변1

내보내기는 변수 abc를 셸에서 환경으로 이동합니까, 아니면 환경에 복사본을 만들고 새 값을 할당합니까?

어느 것도 아니다. export내보낼 변수를 표시하기만 하면 됩니다.

외부 명령이 실행되면 쉘은 이를 전달할 환경을 생성합니다. 내보내기용으로 표시된 변수만 환경에 추가됩니다. 설명은 다음과 같습니다 man bash.

내보내기용으로 표시된 셸 변수 및 함수와 명령용으로 내보낸 변수가 환경에 전달됩니다.

이는env외부주문하다. 따라서 내보낸 변수만 보고할 수 있습니다.

"명령을 위해 내보낸 변수"의 의미

일반 변수 할당에는 지속성이 있습니다. 변수는 삭제(설정 해제)될 때까지 존재합니다. 특정 명령에 사용하기 위해 임시 변수를 생성할 수도 있습니다.

a예를 들어, 다음 명령에서 사용할 변수를 만들어 보겠습니다 env.

$ a=b env | grep ^a=
a=b

관련 정보