반응형
실행 중인 Bash 스크립트의 경로를 확인합니다.
Windows 명령어스크립트에서는 다음 명령을 사용하여 현재 실행 중인 스크립트의 디렉토리 경로를 확인할 수 있습니다.%~dp0. 예:
@echo Running from %~dp0
Bash 스크립트에서는 무엇이 동등합니까?
상대 경로(즉, Windows와 직접 동등한 것)의 경우%~dp0):
MY_PATH="$(dirname -- "${BASH_SOURCE[0]}")"
echo "$MY_PATH"
절대 정규화 경로의 경우:
MY_PATH="$(dirname -- "${BASH_SOURCE[0]}")" # relative
MY_PATH="$(cd -- "$MY_PATH" && pwd)" # absolutized and normalized
if [[ -z "$MY_PATH" ]] ; then
# error; for some reason, the path is not accessible
# to the script (e.g. permissions re-evaled after suid)
exit 1 # fail
fi
echo "$MY_PATH"
bash 스크립트의 전체 경로를 입력한 경우$0그리고.dirname예:
#!/bin/bash
echo "$0"
dirname "$0"
출력 예:
$ /a/b/c/myScript.bash
/a/b/c/myScript.bash
/a/b/c
필요에 따라서, 의 결과를 추가합니다.$PWD변수와 상대 경로를 비교합니다.
편집: 공백 문자를 처리하기 위해 따옴표가 추가되었습니다.
C.U.S.에 관한 Stephane CHAZELAS에 의한 기고POSIX 쉘을 전제로 합니다.
prg=$0
if [ ! -e "$prg" ]; then
case $prg in
(*/*) exit 1;;
(*) prg=$(command -v -- "$prg") || exit;;
esac
fi
dir=$(
cd -P -- "$(dirname -- "$prg")" && pwd -P
) || exit
prg=$dir/$(basename -- "$prg") || exit
printf '%s\n' "$prg"
echo Running from $(dirname "$0")
블라드의 코드가 너무 많이 인용됐어요다음 항목이어야 합니다.
MY_PATH=`dirname "$0"`
MY_PATH=`( cd "$MY_PATH" && pwd )`
언급URL : https://stackoverflow.com/questions/630372/determine-the-path-of-the-executing-bash-script
반응형
'programing' 카테고리의 다른 글
| Linux bash: 다중 변수 할당 (0) | 2023.04.14 |
|---|---|
| SQL Server: 문자열 데이터 피벗 예시 (0) | 2023.04.14 |
| 뷰 모델의 컬렉션에 Collection Container를 바인딩하려면 어떻게 해야 합니까? (0) | 2023.04.14 |
| setFetchSize Mariadb jdbcdriver 버전 3.0.4 (0) | 2023.04.14 |
| 정의되지 않은 메서드 Maatwebsite 호출\Excel\Excel::load() (0) | 2023.04.14 |