기본 조작
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)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.