Post

Shell Script 실행 방식 차이

Shell script 실행 방식의 차이와 권장 사용법, 주의사항 정리

Shell Script 실행 방식 차이

요약

  • 정식 배포/공유용은 ./script.sh(실행 권한, shebang 필수)
  • 실험/테스트는 bash script.sh
  • 환경 변수, 경로, 권한, 디버깅, 호환성 등은 상황에 따라 주의 필요

1. Shell Script 실행 방식 차이

항목./script.shbash script.sh
실행 권한 필요✅ 필요 (chmod +x script.sh)❌ 불필요
shebang(해석기) 사용✅ 사용 (#!/bin/bash 등)❌ 무시 (지정된 bash로 실행)
명시적 해석기 지정⛔ 불가 (파일 내 shebang만 사용)✅ 가능 (원하는 셸 직접 지정 가능)
가독성/명확성시스템 기본 방식과 일치테스트·디버깅 시 유용

2. 상황별 권장 실행 방식

상황권장 실행 방식설명
정식 배포용 스크립트chmod +x script.sh./script.shshebang으로 실행 환경 명확히 지정, 배포 시 표준 방식
실험/테스트/빠른 실행bash script.sh실행 권한 없이 간단히 테스트 가능
특정 셸로 실행해야 하는 경우zsh script.sh, sh script.shbash 이외의 셸로 실행 필요할 때 명시적으로 지정

3. 추가 설명 및 주의사항

3.1 shebang(#!)의 중요성

  • 스크립트 첫 줄에 해석기 경로를 지정하는 부분
    • 예: #!/bin/bash, #!/usr/bin/env bash
  • shebang이 없으면 /bin/sh로 실행되어 Bash 전용 문법이 동작하지 않을 수 있음

3.2 실행 방식과 환경 변수

  • ./script.sh : 독립된 새로운 셸 프로세스에서 실행됨
  • source script.sh 또는 . script.sh : 현재 셸에서 실행, 변수·함수 등 현재 셸에 영향

3.3 경로 사용 주의

  • ./script.sh와 같이 상대경로는 현재 작업 디렉터리에 따라 실행 실패 가능
  • 스크립트 위치가 불명확하면 절대경로 또는 $HOME 변수 활용 권장

3.4 스크립트 내부 권한 문제

  • 실행 권한이 있어도, 내부에서 호출하는 파일/명령어에 권한이 없으면 오류 발생
    • 예: sudo가 필요한 명령은 명시적으로 sudo 사용 필요

3.5 스크립트 디버깅

  • bash -x script.sh : 각 명령 실행 전 출력, 오류 위치 파악에 유용

3.6 셸 호환성

  • #!/bin/sh : POSIX 표준, 단순 스크립트에 적합
  • #!/bin/bash : Bash 전용 기능(배열, 확장 패턴 등) 사용 가능
  • 실행 환경의 기본 셸이 무엇인지 확인 후 작성 권장
This post is licensed under CC BY 4.0 by the author.