スクリプトをインポートするときにスクリプトの現在のディレクトリをどのように参照しますか? [コピー]

スクリプトをインポートするときにスクリプトの現在のディレクトリをどのように参照しますか? [コピー]

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

関連情報