2024-06-30 08:47:14 发布
网友
我从Python调用cmd如下:
subpocess.Popen(['coffee'], shell=True)
我相信可以翻译成:
我从文档中读到,在非交互模式下,像/etc/profile,/etc/巴什.bashrc不读取,使用默认的$PATH(init$PATH)。我说得对吗?是否只有将coffee添加到$PATH的方法是将其复制到/usr/local/bin?在
从历史上看,对于作为非交互式命令调用的shell,不会读取任何启动文件,因为环境可能已经设置好了。在
Python、shell和实际上几乎所有的东西都会将现有环境或至少PATH环境变量传递给子shell,因此,在某种程度上,您已经执行了.profile或bash扩展。(因为它是在用户登录和其他进程继承修改后的路径时运行的。)
PATH
.profile
您可以选择:
/etc/profile
不,shell将从Python解释器继承PATH,也就是说,它将是os.getenv('PATH')。此外,还可以在命令中设置路径:
os.getenv('PATH')
subprocess.Popen(['PATH=/where/ever/bin:$PATH coffee'], shell=True)
不过,我建议您在执行Python程序之前,要么使用coffee的完整路径,要么设置PATH。在
coffee
从历史上看,对于作为非交互式命令调用的shell,不会读取任何启动文件,因为环境可能已经设置好了。在
Python、shell和实际上几乎所有的东西都会将现有环境或至少
PATH
环境变量传递给子shell,因此,在某种程度上,您已经执行了.profile
或bash扩展。(因为它是在用户登录和其他进程继承修改后的路径时运行的。)您可以选择:
/etc/profile
中的所有系统用户指定路径不,shell将从Python解释器继承
PATH
,也就是说,它将是os.getenv('PATH')
。此外,还可以在命令中设置路径:不过,我建议您在执行Python程序之前,要么使用
coffee
的完整路径,要么设置PATH
。在相关问题 更多 >
编程相关推荐