스크립트를 가져올 때 스크립트의 현재 디렉터리를 어떻게 참조합니까? [복사]

스크립트를 가져올 때 스크립트의 현재 디렉터리를 어떻게 참조합니까? [복사]

via라는 스크립트가 있습니다 . ./env/setenv.sh. 이 스크립트에서는 ./env/.

내 현재 전화번호부는 그대로 유지되고 ~/dev/project/있으며 전화를 걸고 있습니다.입력하다 ~/dev/project/env통과하다. ./env/setenv.sh

내 현재 작업 디렉토리가 대신 고려되기 때문에 ${dirname $0}내부에서 위치를 참조하려고 시도했지만 성공하지 못했습니다 (소싱을 사용하고 있기 때문에 가정합니다 ).setenv.sh/bin~/dev/project/env/.

동일한 디렉터리에서 내 스크립트를 호출 setenv.sh할 수 있도록 스크립트의 현재 작업 디렉터리를 참조하려면 어떤 다른 옵션이 있어야 합니까 ?.py

예를 들어,

WORKING_DIR=$(dirname "$0")
echo $WORKING_DIR
export VAR=$(python $WORKING_DIR/script.py)"

인쇄물을 통해 호출할 때 . ./env/setenv.sh: /bin찾을 수 없습니다 .script.py

답변1

다음을 사용하는 경우 작동합니다 bash.

$ cat env/setenv.sh 
WORKING_DIR="$(dirname "${BASH_SOURCE[0]}")"
printf '%s is located in directory %s\n' \
         "$(basename "${BASH_SOURCE[0]}")" "$(dirname "${BASH_SOURCE[0]}")"

PYT_FILE="$WORKING_DIR/script.pyt"

printf 'Python script %s is located in directory %s\n' \
         "$(basename "${PYT_FILE}")" "$(dirname "${PYT_FILE}")"

printf 'Path to Python script is %s\n' "${PYT_FILE}"

$ . ./env/setenv.sh 
setenv.sh is located in directory ./env
Python script script.pyt is located in directory ./env
Path to Python script is ./env/script.pyt

관련 정보