Bash 用于克隆 Git 存储库和 运行 另一个 bash 脚本的脚本

Bash script to clone Git repo and run another bash script

我在使用 bash 脚本 PYTHONPATH 时遇到了一些问题,我正在尝试 运行。有 2 个 bash 脚本,clone_and_run.sh 在根文件夹中。这是克隆一个远程 Git 存储库,然后 运行 在该 Git 存储库的根目录中 运行 另一个 bash 脚本。

但是,在克隆存储库并执行 run.sh 之后,第二个脚本不能 运行 存储库中的 Python 脚本。但是如果我进入 repo root 并执行 run.sh,它工作正常。

文件夹结构如下:

root
|----clone_and_run.sh
|----repo(after cloning from remote)
    |----source
         |----script.py
    |----run.sh
clone_and_run.sh:

#!/usr/bin/env bash
set -e

PYTHONPATH=`pwd`./repo/:$PYTHONPATH

git clone https://---------(redacted)

bash ./repo/run.sh
#!/usr/bin/env bash
set -e

PYTHONPATH=`pwd`/../repo:$PYTHONPATH

python ./source/script.py

这是我在执行 clone_and_run.sh 时得到的错误:python: can't open file './source/script.py': [Errno 2] No such file or directory

克隆后,如果我进入repo并直接执行run.sh,它工作正常。我在两个脚本上尝试了不同的 PYTHONPATH,没有成功。

您没有 cd 进入,run.sh 启动时的当前工作目录 . 不是脚本的目录,它是调用程序的 运行.

要查找调用脚本的目录,我常用的方法是readlink -f [=12=]