[번외] bash로 실행 vs ./로 실행
1. 실행 방식의 차이
| 구분 | bash script.sh | ./script.sh |
|---|---|---|
| 실행 권한 | 필요 없음 | 필수 (chmod +x) |
인터프리터 지정 (#!) | 무시 가능 | 반드시 필요 |
| 실행 방식 | bash가 스크립트를 인자로 받아 실행 | OS가 파일을 직접 실행 (실행 파일처럼 취급) |
| 실행 환경 | 새 bash 셸에서 실행됨 | #!에 명시된 셸에서 실행됨 |
2. 환경 설정 차이
bash script.sh- 현재 셸에서 새로운 bash 프로세스를 생성하여 실행
script.sh의#!(shebang) 줄은 무시됨- 스크립트에 실행 권한이 없어도 실행 가능
./script.sh- 스크립트 파일이 실행 권한을 가져야 함 (
chmod +x script.sh) #!줄에 명시된 셸(#!/bin/bash,#!/usr/bin/env bash등)을 사용해 독립적으로 실행- 시스템이 스크립트를 실행 가능한 프로그램으로 취급
- 스크립트 파일이 실행 권한을 가져야 함 (
3. 예제
script.sh 내용
#!/bin/bash
echo "Running script with PID $$"
실행 권한 부여
chmod +x script.sh
실행 방법
bash script.sh # 실행 권한 필요 없음
./script.sh # 실행 권한 필요, #! 해석됨
4. 주요 차이 요약
| 항목 | bash script.sh | ./script.sh |
|---|---|---|
| 실행 권한 | ❌ 필요 없음 | ✅ 필요함 |
#! 해석 여부 | ❌ 무시됨 | ✅ 해석함 |
| 실행되는 셸 | bash로 고정 | #!에 따라 다름 |
| 호출 방식 | 셸 명령으로 실행 | 실행 파일처럼 실행 |