外链资料:
把操作系统(或者说bash更贴切吧)看作一个正在运行的程序的话,环境变量就是程序的「全局变量」
Windows可以通过可视化的方式查看、编辑环境变量,在Start中搜索「环境变量」(或对应英文)即可找到编辑窗口
[存疑]对于系统变量和用户变量中存在的同名变量(比如path),访问结果是两个的拼合
# 两种方式 set 变量名(比如set path) echo %变量名%(比如echo %path%)
# 查看所有的环境变量,其中env:被看作是一个虚拟驱动 ls env: # 获取某一个环境变量的值(使用$符号) $env:path
%ALLUSERSPROFILE% 局部 返回所有“用户配置文件”的位置。 %APPDATA% 局部 返回默认情况下应用程序存储数据的位置。 %CD% 局部 返回当前目录字符串。 %CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确命令行。 %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。 %COMPUTERNAME% 系统 返回计算机的名称。 %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。 %DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。 %ERRORLEVEL% 系统 返回最近使用过的命令的错误代码。通常用非零值表示错误。 %HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 %HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 %LOGONSEVER% 局部 返回验证当前登录会话的域控制器的名称。 %NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。 %OS% 系统 返回操作系统的名称。Windows 2000 将操作系统显示为 Windows_NT。 %PATH% 系统 指定可执行文件的搜索路径 (sysin)。 %PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。 %PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值: x86,IA64。 %PROCESSOR_IDENTFIER% 系统 返回处理器说明。 %PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。 %PROCESSOR_REVISION% 系统 返回处理器修订号的系统变量。 %PROMPT% 局部 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。 %RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 %SYSTEMDRIVE% 系统 返回包含 Windows XP 根目录(即系统根目录)的驱动器。 %SYSTEMROOT% 系统 返回 Windows XP 根目录的位置。 %TEMP% and %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其它应用程序则需要 TMP。 %TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。 %USERDOMAIN% 局部 返回包含用户帐户的域的名称。 %USERNAME% 局部 返回当前登录的用户的名称。 %UserProfile% 局部 返回当前用户的配置文件的位置。 %WINDIR% 系统 返回操作系统目录的位置。
[思考]因为是临时修改,所以不需要区分修改的是系统变量还是用户变量
# 修改变量值(等号两边最好不要留空格) set 变量名=变量内容(比如set tmp=d:\tmp) # 清空变量值,=后面什么都没有 set 变量名=(比如set tmp=) # 拼接变量值 set 变量名=%变量名%;变量内容(比如set path=%path%;d:\go)
# 修改 $env:Test1="sysin.org" # 清空/删除(注意这里没有$符号,因为没有访问这个变量的值) del env:windir # 拼接 $env:Path="$env:Path;C:\sysin"
[疑问]在CMD中,默认情况下,修改的是用户变量还是系统变量?
# 获取用户变量Path [environment]::GetEnvironmentvariable("Path", "User") # 获取系统变量Path [environment]::GetEnvironmentvariable("Path", "Machine") # 持久化修改 [environment]::SetEnvironmentvariable("变量名称", "变量值", "User") [environment]::SetEnvironmentvariable("变量名称", "变量值", "Machine") # 变量值的位置,同样可以使用$取值,举个例子 [environment]::SetEnvironmentvariable("PATH", "$([environment]::GetEnvironmentvariable("Path", "Machine"));%GOROOT%\bin", "Machine")