컨테이너 디렉터리에 대한 더 쉬운 액세스

컨테이너 디렉터리에 대한 더 쉬운 액세스

여기에 bash 스크립트가 있습니다.

$GOPATH/
     src/
     build.sh

build.sh에는 다음이 있습니다.

export GOPATH="$(cd $(dirname "$BASH_SOURCE") && pwd)"

build.sh의 포함 디렉터리를 가져오는 더 짧은 방법이 있나요?

답변1

스크립트가 있는 디렉토리를 얻으려면 다음 명령을 사용하십시오.

readlink -f $(dirname $0)

Bash 매뉴얼 페이지에 명시된 대로 $0파일 이름을 설정합니다.

readlink -f이 디렉터리의 절대 경로를 가져옵니다.

답변2

BASH_SOURCE 아이디어를 확장하여 절대 경로가 포함되어 있는지 확인하세요. 그렇다면 직접 사용하고, 그렇지 않으면 앞에 PWD를 추가하세요. 그런 다음 뒤에 오는 슬래시와 그 뒤의 모든 항목을 제거하고 포함된 디렉터리만 남겨 둡니다.

case ${BASH_SOURCE[0]} in
  ( /* )
        p=${BASH_SOURCE[0]}
        ;;
  ( * )
        p=${PWD}/${BASH_SOURCE[0]}
        ;;
esac

p=${p%/*}
printf "%s\n" "$p"

관련 정보