쉘 변수와 환경 변수에 대한 혼란을 명확히하고 싶습니다. 쉘 변수가 있고 이를 환경 변수로 설정하는 다음 테스트를 수행 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
합니까 , 아니면 쉘에서 완전히 제거되고 환경에만 존재하므로 해당 값이 인쇄됩니까?echo
abc
abc
echo
답변1
내보내기는 변수 abc를 셸에서 환경으로 이동합니까, 아니면 환경에 복사본을 만들고 새 값을 할당합니까?
어느 것도 아니다. export
내보낼 변수를 표시하기만 하면 됩니다.
외부 명령이 실행되면 쉘은 이를 전달할 환경을 생성합니다. 내보내기용으로 표시된 변수만 환경에 추가됩니다. 설명은 다음과 같습니다 man bash
.
내보내기용으로 표시된 셸 변수 및 함수와 명령용으로 내보낸 변수가 환경에 전달됩니다.
이는env
외부주문하다. 따라서 내보낸 변수만 보고할 수 있습니다.
"명령을 위해 내보낸 변수"의 의미
일반 변수 할당에는 지속성이 있습니다. 변수는 삭제(설정 해제)될 때까지 존재합니다. 특정 명령에 사용하기 위해 임시 변수를 생성할 수도 있습니다.
a
예를 들어, 다음 명령에서 사용할 변수를 만들어 보겠습니다 env
.
$ a=b env | grep ^a=
a=b