티스토리 뷰

반응형

[Linux] source 명령어의 적용 범위: 나만? 모두? 핵심 요약

source 명령어는 오직 명령어를 실행한 현재 터미널 세션에만 영향을 미칩니다. 다른 사용자나 다른 터미널 창에는 전혀 적용되지 않습니다.


source 명령어의 핵심 원리

리눅스에서 셸 스크립트를 실행하는 방식은 두 가지로 나뉩니다.

  • 일반 실행 (./script.sh): 새로운 **자식 셸(Sub-shell)**을 만들어 그 안에서 스크립트를 실행합니다. 스크립트가 끝나면 자식 셸은 사라지고, 내부의 변경 사항(환경 변수, 함수 등)도 함께 사라집니다. 원래의 터미널에는 아무런 영향을 주지 않습니다.
  • source 실행 (source script.sh 또는 . script.sh): 새로운 셸을 만들지 않고, 현재 셸에서 스크립트 코드를 그대로 실행합니다. 따라서 스크립트로 인한 변경 사항이 현재 터미널 세션에 그대로 남게 됩니다.

적용 범위 요약

대상 적용 여부
현재 나의 터미널 창 적용됨 ✅
내가 새로 연 다른 터미널 창 적용 안 됨 ❌
서버에 접속한 다른 사용자 적용 안 됨 ❌

대표적인 사용 예: ~/.bashrc 즉시 적용

~/.bashrc 파일에 새로운 별칭(alias)을 추가한 뒤, 터미널을 재시작하지 않고 바로 사용하고 싶을 때 source를 사용합니다.

# 새로운 alias 추가 후 저장
$ echo "alias ll='ls -alF'" >> ~/.bashrc

# 터미널 재시작 없이 바로 적용
$ source ~/.bashrc

# 이제 ll 명령어를 바로 사용할 수 있음
$ ll

결론적으로 source는 시스템 전체에 영향을 주는 명령어가 아닌, 현재 작업 중인 터미널에만 변경사항을 즉시 반영하는 안전하고 편리한 도구입니다.

반응형