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