![Bash 내장 명령 "set" 및 "export"는 무엇을 수행합니까?](https://linux55.com/image/30639/Bash%20%EB%82%B4%EC%9E%A5%20%EB%AA%85%EB%A0%B9%20%22set%22%20%EB%B0%8F%20%22export%22%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
set
나는 Bash의 목적과 그것이 무엇을 위해 사용되는지에 대해 약간 혼란스럽습니다. export
(다른 쉘도 아마도 같을 것 같습니다).
환경변수를 설정하기 위한 것 같은데 를 통해서도 가능하죠 VARIABLE=VALUE
?
또한 개별적으로 다른 값을 입력 set
하고 export
표시합니다.
그렇다면 그들의 목적은 무엇입니까?
답변1
export
현재 프로세스의 하위 프로세스로 내보내기 위해 지정된 변수를 표시합니다. 기본적으로 해당 변수는 내보내지지 않습니다. 예를 들어:
$ foo=bar
$ echo "$foo"
bar
$ bash -c 'echo "$foo"'
$ export foo
$ bash -c 'echo "$foo"'
bar
set
반면에 쉘 속성과 위치 매개변수가 설정됩니다.
$ set foo=baz
$ echo "$1"
foo=baz
baz
에 할당되지 않았 으며 foo
문자 그대로의 위치 매개변수가 됩니다. set
할 수 있는 다른 작업(주로 셸 옵션)이 많이 있습니다 . 을 참조하세요 help set
.
인쇄의 경우 export
인수 없이 호출하면 쉘 환경의 모든 변수가 인쇄됩니다. set
변수도 인쇄아니요출구. 또한 일부 다른 객체를 내보낼 수도 있습니다(이것은 이식 가능하지 않지만). 을 참조하십시오 help export
.
답변2
쉘 속성 및 위치 매개변수 설정에 대해서는 help set
또는 :set을 참조하세요 .info bash set
내보내지 않은 변수는 하위 프로세스에서 상속되지 않습니다. export
내보낼 변수를 표시하는 데 사용됩니다.
답변3
"내보내기" 명령을 변수를 전역 변수로 만드는 것으로 생각할 수 있습니다.
더 나은 이해를 위해 이전 답변에 다음 예를 첨부하겠습니다.
x=1
bash -c 'echo $x'
# nothing show
export x
bash -c 'echo $x'
# value of x shown
- Windows 사용자의 경우 "set"을 사용하면
명령이 "수락"(오류 없음)되므로 혼란스러울 수 있습니다.