무슨 일이에요

무슨 일이에요

bash 스크립트에서 변수를 생성하고 터미널이 닫힐 때까지(영구적으로는 아님) 해당 변수를 터미널에 유지하려고 합니다. export이것이 나에게 필요한 것이라고 생각했지만 작동하지 않습니다.

#!/bin/bash

export VARIABLE='this is a test'

그런 다음 스크립트를 실행합니다.

$ ./test.sh

그런 다음 동일한 터미널에서:

$ echo "$VARIABLE"

그러나 그것은 빈 응답을 생성합니다.

답변1

무슨 일이에요

새 프로세스를 시작하고 (프로세스에서) 환경 변수를 설정한 다음 프로세스를 종료합니다. 변수가 사라집니다.

무엇을 해야할지

Bash 스크립트를 가져오되 실행하지는 마세요. 예를 들어 다음 중 하나

source ./test.sh 
. ./test.sh

답변2

스크립트를 실행할 때 변수를 설정하는 하위 쉘을 생성합니다. 스크립트 실행이 끝나면 변수가 삭제됩니다. 현재 쉘에서 사용하려면 다음과 같이 스크립트를 실행하십시오.

. ./test.sh

답변3

source(또는 ) 외에도 .쉘 기능을 사용할 수도 있습니다.

이 시도:

test_sh() {
  export VARIABLE='this is a test'
  ...
}

시험:

printf "VARIABLE=%s\n" "${VARIABLE}"
VARIABLE=

.

test_sh
printf "VARIABLE=%s\n" "${VARIABLE}
VARIABLE=this is a test

관련 정보