공통 시동 파일과 용도

다음은 '유닉스·리눅스 시스템 관리 핸드북'의 일부를 인용한 것이다.

1

  • th
    • 타깃
    • 파일명
    • 전형적 용도
  • td
    • 모든 셸
    • .login_conf
    • 사용자별 로그인 기본값의 설정(FreeBSD)
  • td
    • sh
    • .profile
    • 검색 경로, 터미널 타입, 환경설정
  • td
    • bash
    • .bashrc
      • 터미널 타입 설정(필요한 경우)
      • biff와 mesg 스위치 설정
  • td
    • bash
    • .bash_profile
      • 환경변수 설정
      • 명령 앨리어스 설정
      • 검색 경로 설정
      • 사용 권한을 제어하는 umask 값 설정
      • 파일명 검색용 CDPATH 설정
      • PS1(프롬프트)과 HISTCONTROL 변수 설정

내가 가장 많이 사용하는 macOS 컴퓨터를 기준으로 설명을 보충한다.

  • .login_conf
    • macOS는 BSD 계열의 UNIX 시스템이긴 하지만, .login_conf 파일은 사용하지 않는다.
  • .profile
    • .bash_profile 파일이 없다면 bash는 .profile 파일을 읽는다.
    • .bash_profile 파일이 있다면 bash는 .bash_profile 파일을 읽는다.
  • .bashrc
    • rc는 run command의 약자이다.
    • 터미널 타입 설정: TERM 환경변수 같은 것을 말한다.
      • 내 경우에는 export TERM=xterm-256color 과 같이 설정한다.
    • 다음 둘은 요즘은 거의 아무도 사용하지 않을 것이다.
      • biff: 초기의 UNIX 시스템에서 사용되던 이메일 도착 알림.
      • mesg: 다른 사용자가 write 명령을 사용해 보내는 메시지를 받을 것인지를 설정.

실행 기준과 순서

  • .bash_profile
    • 로그인 셸이 시작될 때 한 번 실행된다.
    • 예:
      • GUI 세션을 시작.
      • ssh로 원격 로그인.
  • .bashrc
    • 새로운 셸 인스턴스를 시작할 때마다 실행된다.

두 파일의 실행 시점을 파악하기 위해 다음과 같이 .bash_profile.bashrc를 구성해 실험해 보자.

  • .bash_profile
#!/usr/bin/env bash

echo '.bash_profile'
  • .bashrc
echo '.bashrc'

이런 상태에서 터미널 에뮬레이터를 실행하거나 터미널의 새 탭을 열면, 터미널 스크린에 다음과 같이 출력된다.

.bash_profile

서브셸 레벨을 확인해보면 1 이다.

$ echo $SHLVL
1

이 때 bash를 실행하면 .bashrc를 읽고 실행한다.

$ bash
.bashrc

$ echo $SHLVL
2

내 설정

나는 다음과 같이 설정한다.

  • .bash_profile
    • 주로 PATH 값을 설정하고, PATHexport 한다.
    • 마지막에 .bashrc를 실행한다.
  • .bashrc
    • 그 외의 환경변수 설정.
    • alias 설정.
    • 잡다한 bash 설정 파일을 for 돌리면서 source.

참고문헌

  • 유닉스·리눅스 시스템 관리 핸드북 5/e / 에비 네메스, 가스 스나이더, 트렌트 헤인, 벤 웨일리, 댄 맥킨 저 외 2명 / 에이콘출판사 / 발행: 2022년 01월 03일 / 원제: UNIX and Linux System Administration Handbook, 5th Edition

주석

  1. 유닉스·리눅스 시스템 관리 핸드북 5/e. 8장. 420쪽.