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
✅ 실무 흐름 요약
su user
→ 환경은 유지되므로 오염 가능성 있음 (권장 ❌)su - user
→ 환경까지 전환되므로 정확한 계정 전환 가능 (권장 ✅)- 사용자 환경 구성은
~/.bashrc
(alias 등),~/.profile
(변수 등)에 구분해서 설정 - 시스템 전체 적용은
/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