우분투 실전 명령어 | 환경변수 관리(export, ~/.bashrc, /etc/environment)

언제 쓰는가

개발 도구 경로를 잡거나, 앱 실행에 필요한 키 값을 쉘에서 바로 쓰고 싶을 때 환경변수를 만집니다. 한 번만 임시로 넣을 건지, 로그인할 때마다 유지할 건지를 먼저 나눠서 보면 헷갈림이 줄어듭니다. 서버 운영에서는 사용자별 설정(~/.bashrc)과 시스템 전역 설정(/etc/environment)을 구분해서 쓰는 게 안전합니다.

바로 쓰는 명령어

# 1) 현재 셸에서만 임시 적용
export APP_ENV=production
export PATH="$HOME/.local/bin:$PATH"

# 확인
echo "$APP_ENV"
which python3
# 2) 사용자 계정에 영구 적용
echo 'export APP_ENV=production' >> ~/.bashrc
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

# 현재 세션에 즉시 반영
source ~/.bashrc

# 반영 확인
printenv APP_ENV
echo "$PATH" | tr ':' '\n' | head -5
# 3) 시스템 전역 적용(/etc/environment) - sudo 필요
sudo cp /etc/environment /etc/environment.bak.$(date +%F-%H%M)
echo 'APP_ENV=production' | sudo tee -a /etc/environment >/dev/null

# 새 로그인 세션에서 확인
printenv APP_ENV

핵심 옵션/패턴

  • export VAR=value: 현재 셸 + 자식 프로세스에 전달됩니다.
  • source ~/.bashrc(또는 . ~/.bashrc): 파일 내용을 현재 셸에 즉시 적용합니다.
  • printenv VAR: 변수 확인할 때 echo보다 명확합니다.
  • PATH 추가는 보통 앞쪽 prepend(new:$PATH)로 넣어 우선순위를 제어합니다.

자주 하는 실수

  • ~/.bashrc에 추가만 하고 새 터미널을 안 열거나 source를 안 해서 “적용 안 됨”으로 착각.
  • PATH="$PATH:/new/bin"만 반복해서 추가해 중복 PATH가 비대해짐.
  • /etc/environmentexport를 붙여서 문법 오류 발생 (export 없이 KEY=value만).
  • 따옴표 처리를 잘못해 공백 포함 값이 잘리는 문제 (KEY="a b" 형태로 처리 필요).

검증 방법

# 변수 값 검증
printenv APP_ENV

# 셸 설정 파일에 중복 라인 있는지 확인
grep -n 'APP_ENV\|\.local/bin' ~/.bashrc

# PATH 우선순위 확인
command -v python3

실행 결과 예시

$ export APP_ENV=production
$ echo "$APP_ENV"
production

$ source ~/.bashrc
$ printenv APP_ENV
production

$ echo "$PATH" | tr ':' '\n' | head -3
/Users/ubuntu/.local/bin
/usr/local/bin
/usr/bin
$ grep -n 'APP_ENV\|\.local/bin' ~/.bashrc
121:export APP_ENV=production
122:export PATH="$HOME/.local/bin:$PATH"

$ command -v python3
/usr/bin/python3

출처

  • Ubuntu Documentation
  • GNU Bash Manual
  • systemd environment.d 문서