IT

실행중인 BASH 펼쳐의 경로 확인

lottoking 2020. 8. 16. 21:29
반응형

실행중인 BASH 펼쳐의 경로 확인 [중복]


가능성이 :
Bash 펼쳐진 어떤 디렉토리에 저장되어 있는지 알 수 있습니까?

Windows 명령 펼쳐에서를 사용하여 현재 실행중인 디렉토리디렉토리 경로를 확인할 수 있습니다 %~dp0. 예를 들면 :

@echo Running from %~dp0

BASH 펼쳐 에서 동등한 무엇입니까?


상대 경로의 경우 (즉, Windows '와 직접 동등 함 %~dp0) :

MY_PATH="`dirname \"$0\"`"
echo "$MY_PATH"

정규화 된 절대 경로의 경우 :

MY_PATH="`dirname \"$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변수 결과를 상대 경로에 추가합니다 .

편집 : 공백 문자를 처리하기 위해 인용 부호가 추가되었습니다.


에 의해 공헌 스테판 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`

Vlad의 코드가 너무 많이 인용되었습니다. 해야한다 :

MY_PATH=`dirname "$0"`
MY_PATH=`( cd "$MY_PATH" && pwd )`

참고 URL : https://stackoverflow.com/questions/630372/determine-the-path-of-the-executing-bash-script

반응형