CS/OS

[Linux] 리눅스 로그인 환경 설정 파일 구조 정리

clolee 2025. 4. 17. 16:24

 

✅ 리눅스 로그인 환경 구성 파일 구조 정리


🧭 시스템 vs 사용자 환경 설정 파일

구분 파일 설명 적용 범위
시스템 전체 설정 /etc/profile 로그인 시 모든 사용자에게 공통 적용 전역 (root 포함)
사용자 설정 ① ~/.profile 로그인 셸에서 사용자별 설정 각 사용자 (sh 계열 로그인용)
사용자 설정 ② ~/.bashrc 비로그인 셸 또는 터미널 열릴 때마다 적용됨 bash 전용

✅ 파일별 작동 시점

상황 불리는 파일
ssh 로그인 / su - 사용자 / GUI 로그인 /etc/profile~/.profile (또는 ~/.bash_profile)
터미널 창만 새로 열었을 때 (GUI에서 터미널 실행) ~/.bashrc
su 사용자 (하이픈 없음) 환경 설정 파일 안 불림 (현재 셸 유지)

즉, 로그인 셸: ~/.profile, ~/.bash_profile, /etc/profile

비로그인 셸: ~/.bashrc


su, su -, sudo su 차이와 흐름


📌 명령어 비교

명령어 의미 환경 설정 설명
su user 사용자 전환 (셸만 전환) ❌ 불러오지 않음 사용자 전환은 되지만 환경변수는 그대로
su - user 로그인 셸로 전환 /etc/profile, ~/.profile 등 실행됨 로그인처럼 완전히 전환됨
sudo su root 셸로 전환 ❌ 환경 불러오지 않음 sudo 권한 있는 사용자가 root로 진입
sudo su - root 로그인 셸 진입 ✅ root의 환경 설정 불러옴 su - root와 같음

 

참고)

su user 하면 기존 사용자 환경변수를 따르는 것도 아니고 그냥 /etc/profile 읽고 끝나는 듯함.


📌 예시 명령어

su - mydev      # mydev 계정으로 로그인 셸 전환 (환경 설정 적용됨)
su mydev        # 단순 셸 전환 (환경변수는 유지)
sudo su -       # root 로그인 셸로 전환

💡 실무에서는 항상 su - 사용자명 혹은 sudo su -을 사용해야 환경까지 완전하게 전환됩니다.


✅ 각 설정 파일의 역할과 작성 예시


/etc/profile (시스템 전체 초기화 설정)

  • 시스템 전역 셋업: 모든 사용자의 로그인 셸에서 실행
  • 보통 시스템 PATH, LANG, 메시지 MOTD 등을 설정
export PATH="/usr/local/bin:$PATH"
export LANG="ko_KR.UTF-8"

~/.profile 또는 ~/.bash_profile

  • 로그인 셸에서 사용자의 초기 환경 설정
  • GUI 로그인 또는 su - 사용자 시 실행
export JAVA_HOME="$HOME/java"
export PATH="$JAVA_HOME/bin:$PATH"

.bash_profile이 있으면 .profile보다 우선 적용됨


~/.bashrc (bash 셸 전용, 비로그인 셸 포함)

  • 터미널 실행, ssh 접속 시 마다 실행됨
  • alias, prompt 설정 등 자주 설정됨
alias ll='ls -alF'
alias python='python3'
export EDITOR=vim

일반적으로 .bashrc는 .bash_profile이나 .profile에서 다음처럼 호출해줍니다:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

✅ 실무 흐름 요약

  1. su user → 환경은 유지되므로 오염 가능성 있음 (권장 ❌)
  2. su - user → 환경까지 전환되므로 정확한 계정 전환 가능 (권장 ✅)
  3. 사용자 환경 구성은 ~/.bashrc (alias 등), ~/.profile (변수 등)에 구분해서 설정
  4. 시스템 전체 적용은 /etc/profile 또는 /etc/environment에서 관리

✅ 추천 사용자명 변수 예시

실습/문서에서 사용할 때는 mydev, webadmin, datauser, dev01 같은 역할 기반의 사용자명을 추천합니다:

su - mydev
su - datauser
su - backend01

이렇게 하면 사용자 역할과 연결이 쉬워지고 팀에서도 통일성 있게 관리할 수 있습니다.


✅ 실습 명령어 요약

# 사용자별 로그인 환경 확인
su - myuser              # ~/.profile, ~/.bashrc 실행됨

# 단순 사용자 전환 (환경 유지)
su myuser                # 환경 설정은 불리지 않음

# 현재 로그인 셸 확인
echo $0                  # -bash이면 로그인 셸, 그냥 bash면 비로그인 셸

# 현재 로그인한 사용자 확인
whoami

# 현재 환경 변수 확인
printenv | less