이 튜토리얼에서는 Bash/셸 스크립트에서 export 키워드를 사용해 환경 변수를 설정하는 방법을 소개합니다.
일반적으로 Bash/셸 스크립트에서 선언한 변수는 해당 스크립트가 실행되는 동안에만 존재합니다.
변수를 다른 곳에서도 사용하려면 환경 변수(environmental variable)로 설정해야 합니다. 환경 변수로 만들면 스크립트 외부의 명령어 실행 시에도 변수를 사용할 수 있습니다. 예를 들어, 스크립트 실행이 끝난 후에도 명령줄에서 해당 변수에 접근할 수 있습니다.
바로 이 작업을 export 키워드가 수행합니다. 사용 방법을 하나씩 살펴보겠습니다.
환경 변수란 무엇인가?
환경 변수는 일반 변수와 거의 같은 방식으로 작동하지만, 어디서든 사용할 수 있다는 점이 다릅니다. 즉, 스크립트 내부뿐 아니라 명령줄에서도, 그리고 실행 중인 다른 프로그램에서도 접근할 수 있습니다.
사실 시스템에는 이미 수많은 환경 변수가 정의되어 있습니다. 대표적인 예로, 홈 디렉터리 경로는 $HOME 환경 변수를 읽으면 확인할 수 있습니다.
현재 설정된 모든 환경 변수는 env 명령어로 확인할 수 있습니다:
env
export로 환경 변수 설정하기
다음 스크립트인 testScript.sh는 환경 변수를 하나 설정한 뒤 종료됩니다:
#!/bin/bash export MY_ENV_VAR="Save the environment!"
위 스크립트를 실행해 보겠습니다:
sh ./testScript.sh
스크립트가 종료된 후에도 MY_ENV_VAR 변수를 계속 사용할 수 있습니다. 다음 명령어로 직접 확인할 수 있습니다:
echo $MY_ENV_VAR
환경 변수가 성공적으로 설정되었으며, 이제 시스템 전체에서 사용할 수 있습니다.
printenv 명령어로도 특정 환경 변수를 확인할 수 있습니다:
printenv MY_ENV_VAR
재부팅 후에도 유지하기
export로 설정한 환경 변수는 컴퓨터를 재부팅하면 사라진다는 점에 유의해야 합니다. 환경 변수를 영구적으로 설정하려면 ~/.bashrc 파일에 선언해야 합니다.
~/.bashrc 파일은 로그인할 때마다 자동으로 실행되는 스크립트입니다. 이 파일에 export 구문을 추가해 두면, 로그인할 때마다 해당 환경 변수가 세션에 등록됩니다.
nano ~/.bashrc
위 명령어는 nano 텍스트 편집기로 파일을 여는 것입니다. 파일 맨 끝에 export 구문을 추가하면 재부팅 후에도 변수가 그대로 유지됩니다:
export MY_ENV_VAR="Save the environment!"
편집 내용을 저장한 뒤, 로그아웃했다가 다시 로그인하거나 아래 명령어를 실행하면 변경 사항을 즉시 적용할 수 있습니다:
source ~/.bashrc
시스템 전체 환경 변수 설정
앞서 설명한 방법으로 설정한 환경 변수는 현재 사용자에게만 적용됩니다. 관리자 권한이 있고 모든 사용자와 프로세스에서 변수를 사용할 수 있게 하려면, 대신 /etc/environment 파일에 추가해야 합니다:
sudo nano /etc/environment
이 파일에는 export 키워드 없이 KEY=VALUE 형식으로 한 줄씩 작성하면 됩니다. 이렇게 하면 시스템의 모든 사용자가 해당 환경 변수를 사용할 수 있습니다.