ioerror

source 사용법 및 옵션 - 현재 셸 환경에서 스크립트 파일을 직접 읽어 실행하는 명령 본문

OS

source 사용법 및 옵션 - 현재 셸 환경에서 스크립트 파일을 직접 읽어 실행하는 명령

반응형

 

source - Execute commands from a file in the current shell

지정한 파일에 기록된 셸 명령어를 현재 활성화되어 있는 셸 프로세스 환경에서 직접 읽어 들여 실행하는 셸 내장(Built-in) 명령어이다. 별도의 서브 셸(Child Shell)을 생성하지 않고 현재 셸의 변수, 함수, 환경 설정(PATH, Alias 등)을 즉시 적용하거나 변경할 때 주로 사용된다. Shell 스크립트 모듈화 및 사용자 환경 설정 파일(.bashrc, .bash_profile 등) 갱신 시 필수적으로 활용된다.

1. source 용도

  • .bashrc나 .zshrc 등 환경 설정 파일을 수정한 후 로그인/로그아웃 없이 변경 사항을 즉시 반영하는 상황에서 사용된다.
  • 파이썬 가상 환경(venv, conda)에 진입하여 해당 환경의 변수와 경로를 현재 셸에 활성화할 때 사용된다.

2. source 서식

source FILENAME [ARGUMENTS]

3. source 옵션

옵션 설명 사용가능 OS 및 쉘
FILENAME 현재 셸 환경에서 실행할 스크립트 파일의 경로를 지정한다. 모든 유닉스/리눅스
ARGUMENTS 스크립트 파일 내부로 전달할 위치 매개변수($1, $2 등)를 지정한다. Bash Zsh Ksh
. (마침표) source 명령의 POSIX 표준 동의어로 동일한 기능을 수행한다. 모든 POSIX 셸
 
 
# 환경 설정 파일을 읽어 현재 셸에 즉시 적용
source ~/.bashrc

# 파이썬 가상 환경 활성화
source venv/bin/activate
# (venv) user@server:~$

# 스크립트에 인자를 전달하며 실행
source ./set_env.sh production
echo $APP_ENV
# production
  • (venv) user@server:~$: activate 스크립트가 현재 셸 환경의 PATH와 프롬프트를 성공적으로 변경하였음을 나타낸다.
  • production: set_env.sh 스크립트 내부에서 설정한 APP_ENV 환경 변수가 현재 셸에 정상적으로 로드되어 출력된 결과이다.

4. source 특이사항(유의사항)

  • 일반적인 스크립트 실행 방식(./script.sh 또는 bash script.sh)은 서브 셸을 생성하여 실행하므로, 스크립트 내부에서 선언한 변수나 cd 명령에 의한 디렉터리 이동이 스크립트 종료 후 현재 셸에 남아있지 않는다. 반면 source 명령은 현재 셸에서 직접 실행되므로 모든 상태 변경이 유효하게 유지된다.
  • POSIX 표준 셸(sh, dash)에서는 source라는 키워드 대신 마침표(.) 명령어가 기본 표준이다. Bash, Zsh 등의 현대적인 셸에서는 두 키워드를 모두 지원한다. Bash Zsh POSIX
  • 지정한 파일에 exit 명령어가 포함되어 있을 경우, 서브 셸이 아닌 현재 셸이 종료되어 접속 중인 터미널 세션이 닫힐 수 있으므로 주의해야 한다.

관련 명령어들

  • . (dot): POSIX 표준에 정의된 source 명령의 동의어이다.
  • export: 환경 변수를 설정하여 하위 프로세스로 전달 가능하게 만든다.
  • alias: 자주 사용하는 명령어 조합에 별칭을 지정한다.
  • env: 현재 설정된 환경 변수 목록을 확인하거나 특정 환경 변수를 적용하여 명령을 실행한다.

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

반응형
Comments