我正在使用python运行一个包含bashsource命令的bash脚本。出于某种原因,source
命令不起作用
Bash脚本代码:
#!/bin/bash
SETTINGSFILE=/apps/settings
if test -f "$SETTINGSFILE"; then
source $SETTINGSFILE #This is not working
echo "settings file exists" #reaches here
else
echo "settings file not found"
fi
...
Python代码:
import subprocess
rc = subprocess.call(["./<name-of-bash-script>.sh"])
基本上,我希望使用脚本运行命令source /apps/settings
。控件到达echo语句(用注释标记),但bash脚本仍然没有执行source
命令。如何让它工作
我不知道为什么在终端中运行“source file.sh”不会加载您的环境变量(我现在不在linux系统上,不能真正测试这个)。然而,一般来说,如果您想要操纵您的环境,您应该直接在python中这样做,而不是调用子进程。比如说,
我认为,如果您希望更改子进程中的环境变量,则需要将该子进程嵌入当前父进程中(以便您成为新环境中的子进程),并且需要保持该子进程处于打开状态(您不希望它终止)。您可能需要在源文件末尾添加“/bin/bash-i”之类的内容(以保持子进程运行)。然后,您需要使用类似于pexpect模块的东西将子流程嵌入到当前流程中
对不起,我帮不上什么忙了
相关问题 更多 >
编程相关推荐