기본 조작
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
# 또는
. ~/.zshrcPATH 관리
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편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서GNU/Linux man 페이지 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.