[번외] 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로 고정 | #! 에 따라 다름 |
호출 방식 | 셸 명령으로 실행 | 실행 파일처럼 실행 |