为什么upstart无法运行'source bin/activate'?

31 投票
2 回答
8996 浏览
提问于 2025-04-17 15:33

upstart出于某种原因没有激活我的虚拟环境。

这是我运行它的方式:

script
    # My startup script, plain old shell scripting here.
    cd path/to/env
    source bin/activate
    ....
end script

当我手动启动虚拟环境时,它运行得很好。

为什么这样不行呢?

2 个回答

43

source 是一个bash内置命令,但它只是一个posix的“特殊”命令。

Upstart在执行脚本部分时会运行 sh -e

sh这个命令行工具不认识 source,它只懂 .

53

我搞明白了,出于某种原因,upstart 不喜欢用 'source' 这个命令,所以我把这一行从:

source bin/activate

改成了

. bin/activate

这样就可以了,不过我不知道为什么,所以如果有人能解释一下这其中的原因,我会很感兴趣。

撰写回答