Bash 쉘 스크립트 안에서 자신의 스크립트 파일 이름을 가져오는 방법을 소개합니다.
스크립트에서 $0
는 스크립트가 실행될 때 사용된 상대 경로를 갖고 있습니다.
예를 들어, 아래와 같이 스크립트를 실행하면 $0
는 ./bash-script/abc/example.sh
를 값으로 갖고 있습니다.
$ bash ./bash-script/abc/example.sh
$ ./bash-script/abc/example.sh
아래 명령어에서는 $0
는 abc/example.sh
가 됩니다.
$ bash abc/example.sh
1. basename으로 파일 이름 추출
$(basename "$0")
는 파일 경로에서 파일 이름을 추출합니다.
#!/bin/bash
echo "Script path = $0"
echo "Script name =" $(basename "$0")
Output:
$ bash ./bash-script/abc/example.sh
Script path = ./bash-script/abc/example.sh
Script name = example.sh
2. ${0##*/}
으로 파일 이름 추출
${0##*/}
는 파일 경로에서 파일 이름을 추출합니다.
#!/bin/bash
echo "Script path = $0"
echo "Script name = ${0##*/}"
Output:
$ bash ./bash-script/abc/example.sh
Script path = ./bash-script/abc/example.sh
Script name = example.sh
3. BASH_SOURCE
으로 파일 이름 추출 (source로 스크립트 실행 시)
source ./bash-script/abc/example.sh
처럼 source로 스크립트를 실행할 때는 $0
에 파일 경로가 할당되지 않습니다.
이런 경우에는 $0
대신에 ${BASH_SOURCE}
를 사용하셔야 합니다.
#!/bin/bash
echo "Script path = $0"
echo "Script path(bash source) =" $(basename "${BASH_SOURCE}")
echo "Script name =" $(basename "$0")
echo "Script name(bash source) =" $(basename "${BASH_SOURCE}")
bash와 source로 실행할 때, 다음과 같이 차이점을 확인할 수 있습니다.
$ bash ./bash-script/abc/example.sh
Script path = bash-script/abc/example.sh
Script path(bash source) = example.sh
Script name = example.sh
Script name(bash source) = example.sh
$ source ./bash-script/abc/example.sh
Script path = bash
Script path(bash source) = example.sh
Script name = bash
Script name(bash source) = example.sh
Loading script...
Related Posts
- Bash Shell - 문자열에서 마지막 문자 N개 제거
- Bash Shell - 문자열에서 첫번째 문자 N개 제거
- Bash Shell - 실행 시간 측정 방법
- Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리
- Bash Shell - 숫자가 양수인지 음수인지 확인하는 방법
- Bash Shell - 자신의 스크립트 파일 이름 가져오기
- Bash Shell - 문자열 출력 방법(echo, printf)
- Bash Shell - seq 명령어로 반복문 구현 및 예제
- Bash Shell - File 테스트 연산자
- Bash Shell - 무한 루프 (Infinite loop)
- Bash Shell - 숫자 비교 연산자
- Bash Shell - 문자열 비교 연산자
- Bash Shell - 대문자, 소문자로 변환 (Uppercase, Lowercase)
- Bash Shell - 스트립트를 root로 실행했는지 확인
- Bash Shell - 명령어 실행 결과를 변수에 저장
- Bash Shell - select로 선택 메뉴 구현
- Bash Shell - 변수가 정의되었는지 확인하는 방법
- Bash Shell - sleep 함수, 특정 시간 멈추기
- Bash Shell - 파일이 존재하는지 확인
- Bash Shell - 문자열 자르기 (substring, split)
- Bash Shell - 날짜, 시간 가져오기
- Bash Shell - Case 조건문
- Bash Shell - 파일 읽는 방법
- Bash Shell - 사용자로부터 입력 받기
- Bash Shell - 문자열을 연결하는 방법
- Bash Shell - 파일 생성 및 문자열 추가
- Bash Shell - 숫자 변수 증가/감소 시키기
- Bash Shell - 배열 할당, 길이, 객체 포함 여부 확인
- Bash Shell - 문자열 비교, 문자열 포함 여부 확인
- Bash Shell - 변수 선언, 할당
- Bash Shell - 조건문(if-else)
- Bash Shell - 숫자 연산 (더하기, 빼기, 곱하기, 나누기)
- Bash Shell - 반복문(for, while, until loop)
- Bash Shell - Command Line으로 전달된 인자 받기
- Bash Shell - 함수(Function)