我想从shell脚本中调用一个可执行文件。所以我在一个名为start.sh
的文件中写了一些代码。代码为:
#!/bin/sh
source env34/bin/activate
(我想使用文件"activate")。之后我执行
./start.sh
在命令行上,但它不起作用。
您需要删除source
。source
告诉解释器(您的shell)应该将文件直接作为shell脚本加载。您不是在运行shell脚本,而是在运行可执行文件("bin"),所以您只需直接调用它,而不需要source
。
额外提示:如果你的脚本最后一件事就是调用另一个二进制文件,那么你可以使用exec
将你正在运行的脚本替换为二进制文件,这样脚本就不再运行了。有些人喜欢这样,因为它避免了再启动一个过程,并使top
和ps
的输出更精简:
#!/bin/sh
exec env34/bin/activate
请注意,exec
行之后的脚本中不会运行任何内容,因此这仅适用于某些情况。但是"启动器"脚本就是一个很好的例子。