NHN Cloud에 redis를 자동 설치하는 쉘 스크립트를 작성하면서 여러 환경설정 파일을 수정해야 하는 상황이 있었다.

 

사실 /etc/profile, bashrc를 수정하면서도 정확히 어떤 아이들인지 알지 못한 채 찜찜한 상태로.. 돌아가는데만 집중한 점을 반성하면서 (ㅠㅠ) 리눅스에 어떤 환경설정 파일들이 있는지, 어떤 역할을 하는지, 어떤 순서로 적용되는지 꼼꼼히 알아보고자 한다.

 

또한, 선임님께서 말씀해주신 시스템용과 유저별 환경설정 파일의 구분과 설정 내용을 영구적으로 적용하는 방법도 함께 살펴보자!


1. 시스템 / 사용자 설정 파일

시스템 설정 파일

  • 시스템(로그인 쉘)을 사용하는 전체 사용자의 공통 환경을 설정, 시스템 관리자가 관리
  • /etc 디렉토리에 존재
  • 많이 사용하는 bash 쉘
    • /etc/profile : 일반 설정 (모든 사용자에게 적용되는 환경변수, 시작 프로그램 등)
    • /etc/bashrc : alias 관련 함수 설정
    • /etc/profile.d/*.sh : /etc/profile 에서 /etc/profile.d 하위의 sh 파일들을 source하게 되어있음

 

사용자 설정 파일

  • 사용자별 환경을 설정할 수 있고, 각 사용자 홈 디렉토리에 숨김 파일로 저장
  • 많이 사용하는 bash 쉘
    • .bash_profile(.profile) : 개인 사용자에게 적용되는 환경변수, 시작 프로그램 등 (일반 설정 무시 가능)
    • .bashrc : alias 설정
    • .bash_logout : 로그아웃 시 지정 설정

이 중 .profile과 .bash_profile은 같은 것으로 보통 둘 중 하나만 존재하고 둘 다 있다면 .bash_profile 실행

 

 

2. 로그인 / 비로그인 쉘

리눅스에 로그인하면 bash 프로그램이 시작되어 전체 환경을 설정하는 시스템 환경설정을 하게 되고, 사용자별 홈 디렉토리에 있는 설정 파일을 읽어 환경설정을 덮을 수 있다.

 

여기서 사용자란 로그인한 상태를 말하고, 로그인과 비로그인은 로그인 쉘과 비로그인 쉘로 표현한다.

 

로그인 쉘

ID와 Password를 입력해서 쉘에 접근하는 방법

 

비로그인 쉘

GUI 상에서 바로 터미널로 접근하는 방법

 

 

3. 실행 순서

로그인 쉘과 비로그인 쉘 경로의 차이를 살펴보자!

 

로그인 쉘

  1. /etc/profile : 모든 사용자에게 적용되는 환경 설정
  2. ~/.bash_profile : /etc/profile의 설정을 확장하거나 무시
    • 사용자별 홈 디렉토리에 존재하는 환경설정 파일
    • 사용자 홈에서만 사용하는 터미널 설정과 환경변수 설정 기록
    • 로그아웃 될 때까지 유지 및 source 명령어로 설정 적용 가능
  3. ~/.bashrc : 상위 파일이 없으면 읽음
  4. ~/etc/bashrc : 상위 파일이 없으면 읽음

 

비로그인 쉘

로그인 쉘의 상위 프로세스로부터 환경 값을 물려 받는다.

  1. /etc/bashrc
  2. ~/.bashrc

 

최종적으로 터미널은 .bashrc로 실행

사용자가 정의한 변수, alias, 함수 등 사용자가 사용하는 항목 설정

로그인이든 비로그인이든 쉘 시작시 실행

 

💡 로그인 쉘과 자식 쉘을 같은 환경으로 하려면

모든 환경 설정 값은 .bashrc에 넣고 .profile(또는 .bash_profile)의 마지막에 .bashrc 파일을 source 명령으로 실행하기

 

 

4. 변경사항 영구 적용하기

# 시스템 : /etc/profile 하단에
export [변수명]=[환경변수값]

# 사용자 : .bashrc 나 .bash_profile
export [변수명]=[환경변수값]
source [파일명]

 

 

 

 

 

 

Reference

+ Recent posts