我在我的系统首选项(Windows 8.1)中设置了一些环境变量。如果我启动cmd.exe并执行以下命令:
C:\Users\Carlo>echo %GRAILS_HOME%
D:\Grails
C:\Users\Carlo>echo %GRADLE_HOME%
D:\Gradle
C:\Users\Carlo>echo %GROOVY_HOME%
D:\Groovy
C:\Users\Carlo>echo %PATH%
C:\ProgramData\Oracle\Java\javapath;c:\Program Files (x86)\Intel\iCLSClient\;
c:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;
C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;
C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;
C:\Program Files (x86)\Brackets\command;%GRAILS_HOME%\bin;%GRADLE_HOME%\bin;
%GROOVY_HOME%\bin
为什么在PATH中没有扩展最后三个变量?
完整的PATH变量是:
C:\ProgramData\Oracle\Java\javapath;c:\Program Files (x86)\Intel\iCLS Client\;c:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Brackets\command;%GRAILS_HOME%\bin;%GRADLE_HOME%\bin;%GROOVY_HOME%\bin
答案 0 :(得分:0)
环境变量(EnvVars)就是它们的名称:变量;它们具有名称和值(在Windows中,值为字符串)。
因此,在您的示例中,名称为PATH
,值为您列出的字符串。 OS(命令解释器)对EnvVar值的语义一无所知,因此当它扩展var名称时,它只显示其值。它不会分析值并递归扩展可能存在的任何其他变量。
如果变量是在其他变量中定义的(我不推荐的话)是消费者扩展所有变量的工作。
处理EnvVars的常见C函数(可能会有所帮助):ExpandEnvironmentStrings