홈/엔지니어/OS / 시스템/환경변수 — .bashrc · .zshrc · ex…
OS / 시스템초급UbuntuDebianCentOSmacOS환경변수bashrczshrc

환경변수 — .bashrc · .zshrc · export · env

환경변수 설정·조회·해제, 영구 적용 방법(.bashrc/.zshrc/.profile), 프로세스에 변수 전달, .env 파일 관리까지 정리합니다.

목차
  1. 기본 조작
  2. 영구 적용 — 파일 위치
  3. PATH 관리
  4. 특정 명령에만 변수 전달
  5. .env 파일 관리
  6. 시스템 서비스에서 환경변수 (systemd)

기본 조작

Bash
# 설정 (현재 세션만)
export MY_VAR="hello"
export PORT=3000

# 조회
echo $MY_VAR
printenv MY_VAR

# 모든 환경변수 조회
env
printenv
export -p

# 해제
unset MY_VAR

# 변수가 없으면 기본값
echo ${MY_VAR:-"default"}

# 변수 존재 여부 확인
[[ -z "$MY_VAR" ]] && echo "없음" || echo "있음"

영구 적용 — 파일 위치

파일적용 범위언제 실행
/etc/environment시스템 전체로그인 시
/etc/profile시스템 전체로그인 셸
/etc/profile.d/*.sh시스템 전체로그인 셸
~/.profile현재 사용자로그인 셸
~/.bashrc현재 사용자인터랙티브 bash
~/.zshrc현재 사용자인터랙티브 zsh
Bash
# ~/.bashrc 또는 ~/.zshrc에 추가
export PATH="$HOME/.local/bin:$PATH"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
export EDITOR="vim"

# 적용
source ~/.bashrc
# 또는
. ~/.zshrc

PATH 관리

Bash
# PATH에 디렉터리 추가
export PATH="$HOME/bin:$PATH"        # 앞에 추가 (우선순위 높음)
export PATH="$PATH:/opt/custom/bin"  # 뒤에 추가

# 현재 PATH 확인
echo $PATH | tr ':' '\n'

# 명령어 위치 확인
which python3
type -a python3    # 모든 위치 표시

특정 명령에만 변수 전달

Bash
# 앞에 붙이면 해당 명령에만 적용
NODE_ENV=production PORT=8080 node server.js

# env 명령으로 정리
env NODE_ENV=production PORT=8080 node server.js

# 변수를 제거한 환경에서 실행
env -i PATH=$PATH node server.js

.env 파일 관리

Bash
# .env 파일 예시
DB_HOST=localhost
DB_PORT=5432
DB_USER=app
DB_PASS=secret
NODE_ENV=development

# .env 파일 로드 (bash)
set -a; source .env; set +a

# 특정 변수만 로드
export $(grep -v '^#' .env | xargs)

# .env를 현재 세션에 적용
while IFS= read -r line; do
  [[ "$line" =~ ^[^#] ]] && export "$line"
done < .env

주의: .env 파일은 반드시 .gitignore에 추가하세요.


시스템 서비스에서 환경변수 (systemd)

INI
# /etc/systemd/system/myapp.service
[Service]
Environment=NODE_ENV=production
Environment=PORT=3000
EnvironmentFile=/etc/myapp/.env   # 파일에서 로드
Bash
systemctl daemon-reload
systemctl restart myapp
# 확인
systemctl show myapp --property=Environment
#환경변수#bashrc#zshrc#export#env#linux
편집 안내 · Editorial Note

AI 도구가 초안 작성에 사용될 수 있습니다. 명령어의 실행 여부와 검증 환경은 각 가이드에 기재된 근거를 확인하세요. 적용 전 사용 중인 버전의 공식 문서를 확인하고, 오류는 이메일로 알려주세요. 이메일로 제보

주제 관련 공식 문서(자동 연결 · 문장별 근거 아님)GNU/Linux man 페이지 ↗

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.