在Windows中,根据MSDN的文档,某些情况下应用程序运行时会在Path环境变量指定的目录中搜寻它需要的dll。那么如果Path中包含一个不存在的路径,Windows会如何处理这种情况?我本以为这些路径会被忽略,然后Windows会继续搜索,后来发现其实不然。至少在Windows 7上,cmd和Msys的行为不完全是这样。
假设我有一个应用程序conftest.exe,它依赖于SDL.dll;并且假设SDL.dll放在Path包含的某个目录中。在正常情况下,我在cmd中运行conftest.exe,它会正常运行正常退出,没有任何错误提示。
但是如果我在运行conftest.exe前,通过命令在Path变量的开头添加一个不存在的路径(比如NONE),那么conftest.exe在运行时就会报一个找不到SDL.dll的错误:
> set path="NONE;%path%"
> conftest
(弹框提示找不到SDL.dll。)
但是将NONE放在Path的结尾却不会有这个问题: