2
我正在尝试使用subprocess
模块从python内部执行bash脚本。问题是这个bash脚本依赖于我的.bashrc
文件中设置的许多环境变量。我想要的是python子进程完全复制我启动终端窗口时设置的环境。到目前为止,我尝试:在python中复制shell环境以执行bash命令
p = subprocess.Popen(args=['my-script.sh', '--additional_args'], stdout=subprocess.PIPE, env=os.environ.copy(), shell=True)
output_buffer, return_code = p.communicate()
但后来读的地方,即使做shell=True
后,仍然没有加载.bashrc
文件,我应该尝试这样的事情:
p = subprocess.Popen(args=['/bin/bash', '-i', '-c', 'my_script.sh', '--additional_args'], stdout=subprocess.PIPE)
output_buffer, return_code = p.communicate()
但有了这个功能打电话,我得到这个错误:
tput: No value for $TERM and no -T specified
bash: cannot set terminal process group (2071): Inappropriate ioctl for device
bash: no job control in this shell
可能会有用https://stackoverflow.com/questions/9673730/interacting-with-bash-from-python – taras