我在Python的subprocess
模块中偶然发现了一个奇怪的行为:
>>> import os, subprocess
>>> del os.environ["PATH"]
>>> subprocess.run(["python", "--version"])
Python 3.5.1
CompletedProcess(args=['python', '--version'], returncode=0)
我想知道如何在PATH
环境变量未设置的情况下运行该命令?是否有默认PATH
?
答案 0 :(得分:4)
是的,至少在Linux中有一个默认的PATH。
中的这句话如果未定义[PATH变量],则路径列表默认为当前目录,后跟confstr(_CS_PATH)返回的目录列表。 (此confstr(3)调用通常返回值“/ bin:/ usr / bin”。)
答案 1 :(得分:0)
获取
exec*p*
和spawn*p*
使用的默认搜索路径 环境没有'PATH'
密钥。也可以通过os.path
。
它被posixpath.py
(os.path
on POSIX systems)中的':/bin:/usr/bin'
和ntpath.py
(os.path
on Windows)中的'.;C:\\bin'
硬编码。