← 아티클 목록

리눅스 환경변수 설정 — export·.bashrc·.profile 제대로 쓰기

2028-07-03#linux#환경변수#

export PATH=...를 했는데 터미널을 새로 열면 사라져서 당황한 적 있나요? 환경변수가 헷갈리는 이유는 딱 두 가지입니다. 자식 프로세스로 전달되느냐, 그리고 어느 파일에 적어야 살아남느냐. 이 둘만 잡으면 끝입니다.

쉘 변수 vs 환경변수

변수에는 두 종류가 있습니다. 그냥 변수는 현재 쉘 안에서만 살고, export한 변수는 그 쉘이 실행하는 자식 프로세스에까지 전달됩니다.

구분쉘 변수환경변수
만드는 법NAME=값export NAME=값
적용 범위현재 쉘만현재 쉘 + 자식 프로세스
확인setenv / printenv
대표 예임시 작업 변수PATH, HOME, LANG

export 없이 만든 변수는 python app.py 같은 자식 프로세스가 못 봅니다. 프로그램에 설정을 넘기려면 반드시 export가 필요합니다.

로컬 터미널
GREETING=hi          # 쉘 변수
export GREETING      # 환경변수로 승격
echo $GREETING       # hi

어느 파일에 적어야 하나

export는 그 세션이 끝나면 사라집니다. 영구히 남기려면 시작 파일에 적어야 하는데, 파일마다 읽히는 시점이 다릅니다.

파일읽히는 시점용도
~/.bashrc대화형 쉘 열 때마다별칭·함수·일상 변수
~/.profile로그인 시 1회세션 전역 환경변수
~/.bash_profilebash 로그인 시로그인 쉘 설정
/etc/environment시스템 전체모든 사용자 공통

GUI 앱까지 영향을 주려면 보통 ~/.profile이나 /etc/environment에 둡니다. 터미널 별칭처럼 매번 필요한 건 ~/.bashrc가 맞습니다.

적용과 확인

파일을 고친 뒤에는 새 터미널을 열거나 source로 즉시 반영합니다.

로컬 터미널
echo 'export EDITOR=vim' >> ~/.bashrc
source ~/.bashrc      # 지금 쉘에 즉시 반영
OUTPUT
$ printenv EDITOR
vim
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin

PATH에 경로를 추가할 때는 기존 값을 보존하는 게 중요합니다. export PATH="$HOME/bin:$PATH"처럼 $PATH를 다시 포함해야 기존 명령들이 안 깨집니다. 변수를 지울 때는 unset NAME을 씁니다.

요점 정리

  • NAME=값은 현재 쉘만, export NAME=값은 자식 프로세스까지 전달됩니다.
  • 영구 설정은 시작 파일에. 일상 별칭은 ~/.bashrc, 세션 환경변수는 ~/.profile.
  • 수정 후 source ~/.bashrc로 즉시 반영, 확인은 printenv / env.
  • PATH 수정 시 $PATH를 꼭 다시 포함해 기존 경로를 보존하세요.

환경변수와 쉘 설정 파일을 직접 만지며 익히는 실습은 리눅스 트랙에서 회원가입 없이 무료로 익힐 수 있습니다.