众所周知
如果系统中存在一个环境变量:
XXX=AAABBB\CCC
%XXX%\ABC
可以转义为AAABBB\CCC\ABC
这个操作是递归的:
YYY=%XXX%\ABC
那么实际上%YYY%\CBA
这个环境变量应该是AAABBB\CCC\ABC\CBA
然而当我设置了如下的一堆变量之后
ANDROID_HOME=D:\Shell\Android-SDK
ARIA2_HOME=D:\Shell\aria2
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
GIT_HOME=D:\Shell\Git\Git-2.10.2
GOPATH=D:\Shell\Go\GoPath
GO_HOME=D:\Shell\Go\go1.7.3
HTTPD_HOME=D:\Shell\Apache\Apache24
JAVA_HOME=D:\Shell\Java\jdk1.8.0_112
MINGW_HOME=D:\Shell\MinGW
MYSQL_HOME=D:\Shell\MySQL\mysql-5.7.16-winx64
MY_PATH=D:\Shell\Binary;D:\Shell\Android-SDK\platform-tools;D:\Shell\Apache\Apache24\bin;D:\Shell\Git\Git-2.10.2\bin;D:\Shell\Git\Git-2.10.2\cmd;D:\Shell\Git\Git-2.10.2\usr\bin;D:\Shell\MinGW\bin;D:\Shell\MinGW\msys\1.0\bin;%NGINX_HOME%;%PHP_HOME%;D:\Shell\aria2;
NGINX_HOME=D:\Shell\nginx\nginx-1.11.5
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\nodejs\;C:\Users\Banixc\AppData\Local\Programs\Python\Python35-32\Scripts\;C:\Users\Banixc\AppData\Local\Programs\Python\Python35-32\;C:\Users\Banixc\AppData\Local\Microsoft\WindowsApps;C:\Users\Banixc\AppData\Roaming\npm;D:\Softwares\crass-0.4.14.0;D:\Shell\Binary;D:\Shell\Android-SDK\platform-tools;D:\Shell\Apache\Apache24\bin;D:\Shell\Git\Git-2.10.2\bin;D:\Shell\Git\Git-2.10.2\cmd;D:\Shell\Git\Git-2.10.2\usr\bin;D:\Shell\MinGW\bin;D:\Shell\MinGW\msys\1.0\bin;%NGINX_HOME%;%PHP_HOME%;D:\Shell\aria2;
PHP_HOME=D:\Shell\php\php7.0.13-Win32-VC14-x64
SHELL_HOME=D:\Shell
其中 MY_PATH 和 Path 包含了%NGINX_HOME%;%PHP_HOME%这两项
为什么这两项没有被转义?
如果说是顺序的问题,那么为什么%SHELL_HOME% 在前面就被转义了?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.