【发布时间】:2017-11-09 04:15:10
【问题描述】:
我正在尝试使用subprocess 模块从python 内部执行一个bash 脚本。问题是这个 bash 脚本依赖于在我的.bashrc 文件中设置的许多环境变量。我想要的是 python 子进程准确复制我启动终端窗口时设置的环境。到目前为止,我尝试过:
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
【问题讨论】: