据我了解,系统和用户 PATH 变量是相互附加的,并且被应用程序视为单个 PATH 变量。
但是,有些应用程序可能会在启动前更改 PATH 变量。如何查看 PATH 变量对应用程序而言是怎样的?
答案1
要求应用程序显示它。大多数 CLI shell 和编程语言 REPL 都具有此功能:
- 运行
set PATH
,甚至set P
在命令提示符内。 gci env:PATH
在 PowerShell 中运行。os.environ["PATH"]
在 Python 中运行。echo getenv("PATH")
在echo $_ENV["PATH"]
PHP 内运行。
您还可以使用 ProcExp 或 Process Hacker 等工具(它们都是任务管理器的替代品);它们可以显示有关进程的各种信息,包括其环境块。
(请注意,set
Cmd 内部并非 100% 完整;有一些特殊的环境变量,=C:
它故意不显示。)
答案2
此程序列出了每个变量的类。程序仅查看进程。程序查询特定变量。请参阅https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getenvironmentvariable
输出https://winsourcecode.blogspot.com/2019/05/listenvironmentexe-list-system-user.html列出程序使用的系统、用户、易失性以及结果进程环境变量。
--------
System
--------
ComSpec=%SystemRoot%\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
Link=/pdb:none /MAPINFO:LINES
...
--------
Volatile - These are set at logon
--------
LOGONSERVER=\\DESKTOP-UCDGI39
USERDOMAIN=DESKTOP-UCDGI39
...
--------
User - These override system variables, and in the case of PATH are added to the system PATH
--------
include=C:\Program Files (x86)\Microsoft Visual Studio\VC98\atl\include;C:\Program Files (x86)\Microsoft Visual Studio\VC98\mfc\include
;C:\Program Files (x86)\Microsoft Visual Studio\VC98\include
lib=C:\Program Files (x86)\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files (x86)\Microsoft Visual Studio\VC98\lib
...
--------
Process - This is the combined environment from the above for the program
Variables starting with an equals sign, such as =C:=C:\Windows are internal CMD variables
CMD simulates a default directory per drive like MSDos. This is how it keeps track
--------
=C:=C:\Windows\System32
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\David Candy\AppData\Roaming
...
--------
Dynamic - These are updated each time they are used
--------
CD
DATE
TIME
RANDOM
...