Bash 내장 명령 "set" 및 "export"는 무엇을 수행합니까?

Bash 내장 명령 "set" 및 "export"는 무엇을 수행합니까?

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"을 사용하면
    명령이 "수락"(오류 없음)되므로 혼란스러울 수 있습니다.

관련 정보