我正在从Python调用cmd:
subpocess.Popen(['coffee'], shell=True)
我相信的是:
/bin/sh -c "coffee"
从文档中我已经读过,在非交互模式文件中,如/ etc / profile,/ etc / bash.bashrc不会被读取,并且使用默认的$ PATH(init $ PATH)。我对吗?是否有唯一的方法将咖啡添加到$ PATH是将其复制到/ usr / local / bin?
答案 0 :(得分:2)
不,shell将从Python解释器继承PATH
,即它将是os.getenv('PATH')
。此外,您可以在命令中设置路径:
subprocess.Popen(['PATH=/where/ever/bin:$PATH coffee'], shell=True)
虽然我真的建议你使用coffee
的完整路径,或者在执行Python程序之前设置PATH
。
答案 1 :(得分:2)
从历史上看,对于作为非交互式命令调用的shell,没有读取任何启动文件,因为可能已经设置了环境。
Python,shell,实际上几乎所有内容都会将现有环境或至少PATH
环境变量传递给子shell,因此,在某种程度上,您已经执行了.profile
或者bash扩展。 (因为它是在用户登录时运行的,而其他进程继承了修改后的PATH。)
您拥有的选项:
/etc/profile