source 명령어와 bash에 대해 알아보자
Tech/OS

source 명령어와 bash에 대해 알아보자

반응형


들어가며

항상 bash 설정 파일을 건들고 나서 source를 써야만 적용이 됐는데, 이 source가 무엇인지 그리고 어떤 예시가 있는지 살펴보겠습니다.


source 명령어란

source [환경 설정 파일명]

brew나 nodejs를 설치할 때 등 bash나 zsh 파일 설정 적용하는 과정에서 항상 필요한 명령어였습니다.

부팅 시 이러한 설정파일을 로드하게 되는데, 리부팅 없이 이를 즉시 적용하기 위해서 source 명령어를 사용하게 됩니다.


Shell 환경설정 파일

bashBourne Again Shell의 축약어입니다. 리눅스에서 가장 널리 사용되는 쉘이며, 개인적으로 가장 많이 사용하는 쉘이기도합니다.

환경설정 파일에도 다양한 파일이 존재합니다.

  • /etc/profile
  • /etc/bashrc
  • ~/.bash_profile
  • ~/.bashrc
  • ~/.bash_logout

위 5개 파일을 쉽게 구분할 수 있는 몇 가지 규칙이 있습니다.

/etc/ 로 시작하는 녀석들은 전역적인 설정 파일입니다.

반대로 나머지는 지역적인 설정 파일입니다.

 

/etc/profile

시스템 전역 쉘 변수

시스템 사용자 전체에 적용할 쉘 환경 변수를 담고 있으며 보통

경로 환경변수(PATH),

사용자 환경변수(USER),

로그인 사용자(USERNAME),

사용자 메일박스(MAIL),

호스트 이름(HOSTNAME),

히스토리(HISTORY)

등의 다양한 환경 변수를 정의할 수 있습니다.

그리고 초기에 로그인시 수행됩니다. (잠금화면을 생각하면 이해가 편합니다)

~/.bash_profile

유저 개인의 환경 설정

/etc/profile이 전역적인 변수를 관리하는 것과 반대로 bash를 실행하는 그 사용자에게만(지역 변수) 영향을 줍니다.

/etc/profile로 전역적인 설정 파일을 먼저 수행한 뒤 ~/.bash_profile을 수행합니다.

항목은 /etc/profile과 동일합니다.

 

/etc/bashrc

쉘 함수, alias 시스템 전역 변수 정의

alias를 위한 전역 변수들을 정의합니다.

상황을 예를들어 보겠습니다.

 

python2와 python3가 중복 설치되어 있는 환경에서 python이라는 커맨드의 버전을 확인했을때 2버전이 나오고,

사용자는 3버전을 사용하고 싶다고 가정해보겠습니다.

이 때 사용자는 python이라는 alias를 통해 python2 대신 python3를 연결해줄 수 있습니다.

 

2021.11.05 - [OS/MacOS] - [MacOS] M1 python3 설치하기

위 글에서 실제 bashrc에 alias를 등록하고 적용하는 과정이 설명되어 있습니다.

 

~/.bashrc

유저 개인의 alias 및 변수 설정

/etc/bashrc와 기능은 동일하고 지역적 설정이므로 설명은 생략하겠습니다.

 

~/.bash_logout

로그아웃 설정파일

위의 4가지와는 조금 다릅니다.

각 유저 자신에 대한 로그아웃 절차를 포함하며 로그아웃시 실행할 절차를 선언할 수 있습니다.

예를들어 임시 파일을 제거하거나 시스템에 로그인해 있던 시간이 얼마나 되는지 기록하는 명령을 실행하려면 해당 명령을 .bash_logout에 추가하면 됩니다.

이 파일은 사용자 계정에 반드시 있어야 하는 것은 아니고 별다른 설정이 없다면 그냥 로그아웃만 진행합니다.


실행 순서

초기화 파일별 제일 아래에 환경변수나 시작프로그램, alias 설정이 된 경우의 실행 순서입니다.
아래가 아닌 중간, 위에 추가한다면 해당 순서로 실행되지 않습니다.
  1. /etc/profile.d/*.sh
  2. /etc/profile
  3. /etc/bashrc
  4. ~/.bashrc
  5. ~/.bash_profile

References

복세편살 개발라이프

Hadware note

dohk::인공지능과 생명정보학

행궁동 데이터 엔지니어

Dev. KS

반응형

'Tech > OS' 카테고리의 다른 글

source 명령어와 bash에 대해 알아보자  (0) 2021.11.15
[MacOS] M1 python3 설치하기  (0) 2021.11.05
[MacOS] Brew & Git 설치하기  (0) 2021.11.04