[Linux] Bash에서 `source` 명령어 사용법 정리

2025. 9. 7. 02:51·개발 (Development)/Linux

리눅스나 macOS 환경에서 개발 작업을 하다 보면 source 명령어를 자주 접하게 됩니다. 특히 AWS나 기타 서비스의 인증 토큰을 담은 token.sh 같은 스크립트를 불러올 때 자주 활용됩니다. 이번 글에서는 source 명령어가 무엇인지, 왜 필요한지, 그리고 실제 활용 방법을 정리해보겠습니다.

1. source 명령어란?

source는 쉘 내장 명령어로, 스크립트 파일을 새로운 프로세스가 아닌 현재 쉘에서 실행하게 합니다.
즉, 파일 안에 들어 있는 export 같은 환경 변수 설정이 현재 터미널 세션에 그대로 반영됩니다.

  • 실행 방식: source <파일명>
  • 짧은 축약형: . <파일명>

2. bash <파일명>과의 차이

많은 분들이 bash token.sh처럼 실행하는데, 이렇게 하면 새로운 하위 셸에서 실행됩니다.
하위 셸이 종료되면 설정한 환경 변수나 경로 변경 내용이 현재 셸에는 남지 않습니다.
반면에 source는 현재 쉘에 바로 적용되므로 환경 변수를 세션에 유지할 때 꼭 사용해야 합니다.

3. 경로 지정 방법

token.sh 파일이 현재 디렉토리에 있다면:

source token.sh

특정 폴더에 있다면:

source aws/token.sh

4. 실행 권한은 필요 없다

source는 단순히 파일 내용을 읽어 현재 쉘에서 실행하기 때문에, 해당 파일에 실행 권한(chmod +x)이 없어도 상관없습니다.
다만 일반적으로 관리 편의를 위해 실행 권한을 주는 경우도 있습니다.

chmod +x aws/token.sh   # 실행 권한 부여 (선택 사항)

5. zsh 등 다른 셸에서의 사용

대부분의 셸에서 source와 .(점)은 동일하게 동작합니다.
다만 일부 환경에서는 .만 지원되는 경우도 있습니다.

예시:

. aws/token.sh

만약 기본 셸이 zsh인데 bash 전용 스크립트를 실행해야 한다면:

bash -c "source aws/token.sh; exec bash"

6. 자주 쓰이는 활용 예시

  • AWS 토큰 불러오기:source aws/token.sh
  • Python 가상환경 실행:source venv/bin/activate
  • DB 연결 환경 변수 설정:source db.env

정리

  • source는 스크립트를 현재 쉘에서 실행하는 명령어이다.
  • bash file.sh와 달리 환경 변수와 설정이 유지된다.
  • 실행 권한이 없어도 사용 가능하며, .(점)으로도 대체할 수 있다.
  • AWS 인증, 가상환경 실행, 환경 변수 세팅 등에서 자주 활용된다.
반응형

'개발 (Development) > Linux' 카테고리의 다른 글

[Linux/Ubuntu] Ubuntu 서버 LVM 루트 디스크 용량 부족 문제 해결  (1) 2025.06.01
[Linux] 서버 Memory Swap 사용량  (1) 2025.02.17
[Linux] ll 명령어 완벽 가이드  (0) 2025.02.17
[Linux] 서버 캐시 정리 명령어  (0) 2024.12.21
[Linux/Ubuntu 20.04 LTS] 부팅할 때 특정 파일을 실행  (0) 2024.05.07
'개발 (Development)/Linux' 카테고리의 다른 글
  • [Linux/Ubuntu] Ubuntu 서버 LVM 루트 디스크 용량 부족 문제 해결
  • [Linux] 서버 Memory Swap 사용량
  • [Linux] ll 명령어 완벽 가이드
  • [Linux] 서버 캐시 정리 명령어
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ADsP
    Spring boot
    springboot
    Kubernetes
    자바
    pandas
    DevOps
    PostgreSQL
    docker
    백준알고리즘
    리눅스 마스터 2급
    Linux
    AWS
    리눅스 마스터 2급 2차
    백준
    Linux master
    백준자바
    python
    javascript
    Vue.js
    데이터분석
    오답노트
    timescaledb
    JSON
    백준온라인저지
    deepseek
    JPA
    MyBatis
    Kafka
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Linux] Bash에서 `source` 명령어 사용법 정리
상단으로

티스토리툴바