Shell Script 실행 방식 차이
Shell script 실행 방식의 차이와 권장 사용법, 주의사항 정리
Shell Script 실행 방식 차이
요약
- 정식 배포/공유용은
./script.sh(실행 권한, shebang 필수) - 실험/테스트는
bash script.sh - 환경 변수, 경로, 권한, 디버깅, 호환성 등은 상황에 따라 주의 필요
1. Shell Script 실행 방식 차이
| 항목 | ./script.sh | bash script.sh |
|---|---|---|
| 실행 권한 필요 | ✅ 필요 (chmod +x script.sh) | ❌ 불필요 |
| shebang(해석기) 사용 | ✅ 사용 (#!/bin/bash 등) | ❌ 무시 (지정된 bash로 실행) |
| 명시적 해석기 지정 | ⛔ 불가 (파일 내 shebang만 사용) | ✅ 가능 (원하는 셸 직접 지정 가능) |
| 가독성/명확성 | 시스템 기본 방식과 일치 | 테스트·디버깅 시 유용 |
2. 상황별 권장 실행 방식
| 상황 | 권장 실행 방식 | 설명 |
|---|---|---|
| 정식 배포용 스크립트 | chmod +x script.sh 후 ./script.sh | shebang으로 실행 환경 명확히 지정, 배포 시 표준 방식 |
| 실험/테스트/빠른 실행 | bash script.sh | 실행 권한 없이 간단히 테스트 가능 |
| 특정 셸로 실행해야 하는 경우 | zsh script.sh, sh script.sh 등 | bash 이외의 셸로 실행 필요할 때 명시적으로 지정 |
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.