우리가 터미널 창을 열면, 리눅스는 보이지 않는 곳에서 아래 순서대로 파일들을 읽어 PATH를 조립합니다.
/etc/environment (시스템 태초의 PATH)우분투가 켜질 때 가장 밑바닥에서 읽는 파일입니다. 아주 순수한 텍스트 형태로, 시스템 전체가 사용할 가장 기본적인 뼈대 PATH(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)가 여기에 하드코딩되어 있습니다.
/etc/profile (시스템 공통 설정)시스템에 접속하는 '모든 사용자'에게 공통으로 적용될 PATH를 덧붙입니다.
~/.profile (사용자 개인의 최종 PATH 완성) ⭐️ 핵심!이 파일이 바로 질문하신 내용의 진짜 범인입니다! 사용자가 로그인할 때 딱 한 번 실행되는 파일입니다.
실제 우분투의 ~/.profile 파일을 열어보면 아래와 같은 코드가 들어있습니다.
Bash
`# ~/.profile 의 내부 모습 (예시)
if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi
if [ -n "$BASH_VERSION" ]; then if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi`
💡 흐름 요약:
시스템이 기본 PATH를 만듦 👉 ~/.profile에서 내 개인 폴더를 PATH에 추가함 👉 그다음에 .bashrc를 불러와서 화면 색상과 단축어(alias)를 세팅함!
.bashrc에는 PATH를 안 넣을까요?.bashrc는 '터미널 창을 새로 열 때마다(비로그인 쉘)' 계속해서 실행되는 파일입니다.
만약 기본 설정으로 .bashrc 안에 export PATH="$PATH:/my/folder"를 넣어두면 어떻게 될까요?
터미널 안에서 또 다른 쉘을 열거나, tmux 같은 화면 분할 프로그램을 쓸 때마다 .bashrc가 반복 실행되면서 PATH가 /my/folder:/my/folder:/my/folder... 처럼 뱀 꼬리 물듯 무한정 길어지는 끔찍한 사태가 발생합니다.
그래서 **"PATH 설정처럼 한 번만 세팅하면 되는 무거운 작업은 로그인할 때 .profile에서 딱 한 번만 끝내고, 화면 색상이나 단축어 같은 가벼운 세팅만 터미널을 열 때마다 .bashrc에서 다시 읽자!"**라는 것이 리눅스 설계자들의 철학입니다.
(참고: 하지만 이전 실습에서 우리가 굳이 .bashrc 맨 밑에 PATH를 강제로 추가했던 이유는, 터미널을 껐다 켤 필요 없이 source ~/.bashrc 명령어 한 방으로 가장 빠르고 확실하게 내가 만든 스크립트를 적용시키기 위한 '개발자들의 흔한 실무 꼼수'였답니다!)
root@8661a1ae0b6e:/etc# cat environment