为什么这不起作用:
command = "source InitVariables.sh ; run_simnogui"
r = subprocess.call(command, shell=True,executable='/bin/bash')
输出
/bin/bash: run_simnogui: command not found
我在任何地方使用此脚本并且它有效,它将run_simnogui
定义为别名,然后它应该在子进程中可用...?
答案 0 :(得分:0)
问题是shell将以下文本作为单个命令行接收:
source InitVariables.sh ; run_simnogui
在执行任何输入之前执行别名扩展,因此在需要扩展时尚未定义run_simnogui
。一旦扩展了这一行,shell只会在你的路径中查找名为run_simnogui
的内置命令或这样的命令,因此它会失败。
解决方案,就像使用别名一样,是使用shell函数。将run_simnogui
定义为InitVariables.sh
中的函数:
run_simnogui () {
# Put body here
}
现在,当您调用subprocess.call
时,run_simnogui
的查找将成功,因为该名称的函数由之前的source
命令定义。