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