【问题标题】:Bash script to clone Git repo and run another bash script用于克隆 Git 存储库并运行另一个 bash 脚本的 Bash 脚本
【发布时间】:2020-10-06 08:51:33
【问题描述】:

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

但是,在克隆 repo 并执行 run.sh 之后,第二个脚本无法运行 repo 中的 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,没有运气。

【问题讨论】:

    标签: bash git shell sh


    【解决方案1】:

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

    要查找调用脚本的目录,我常用的方法是readlink -f $0

    【讨论】:

    • 谢谢,这就是问题所在!
    猜你喜欢
    • 2018-02-20
    • 2019-06-07
    • 2012-06-07
    • 2020-10-26
    • 1970-01-01
    • 2023-01-13
    • 2019-05-09
    • 2011-07-27
    • 2012-06-22
    相关资源
    最近更新 更多