Windows10 cmd.exe 默认目录不同于 Windows7
Windows10 cmd.exe default directory different to Windows7
当您已经在 Win7 和 Win10 之间的 shell 中执行 cmd.exe 时,我发现默认目录的行为有所不同。
Windows 7:
C:\projects\test>ver
Microsoft Windows [Version 6.1.7601]
C:\projects\test>cmd.exe
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\projects\test>exit
C:\projects\test>
Windows 10:
C:\projects\test>ver
Microsoft Windows [Version 10.0.18363.1316]
C:\projects\test>cmd.exe
Microsoft Windows [Version 10.0.18363.1316]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\john>exit
C:\projects\test>
我面临的问题是,这种行为差异导致某些第 3 方脚本失败,因为它假设执行 cmd.exe 时,它是 运行默认目录而不是用户的主目录或 C:\Users\xxxx
例如:
yarn install
当目录包含 package.json 时依赖于 phantomjs-prebuilt。它最终在 C:\Users\xxxx
而不是 node_modules\karma-phantomjs-launcher\node_modules\phantomjs_prebuilt
目录中寻找 install.js
。
- Maven的maven-javadoc-plugin在执行jar目标时动态创建了一个
javadoc.bat
,那个BAT文件专门调用了cmd.exe
来执行javadoc。本质上,由于这种行为,从 Maven 构建的 javadoc 执行在 Windows10 中失败。
找到原因了。我工作的地方有一个注册表设置,适用于公司范围内的所有 Windows10 设备。
HKEY_CURRENT_USER\Software\Microsoft\Command 处理器中的自动运行键,可将目录更改为用户的主目录。
删除这个键,然后行为是一致的。
当您已经在 Win7 和 Win10 之间的 shell 中执行 cmd.exe 时,我发现默认目录的行为有所不同。
Windows 7:
C:\projects\test>ver
Microsoft Windows [Version 6.1.7601]
C:\projects\test>cmd.exe
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\projects\test>exit
C:\projects\test>
Windows 10:
C:\projects\test>ver
Microsoft Windows [Version 10.0.18363.1316]
C:\projects\test>cmd.exe
Microsoft Windows [Version 10.0.18363.1316]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\john>exit
C:\projects\test>
我面临的问题是,这种行为差异导致某些第 3 方脚本失败,因为它假设执行 cmd.exe 时,它是 运行默认目录而不是用户的主目录或 C:\Users\xxxx
例如:
yarn install
当目录包含 package.json 时依赖于 phantomjs-prebuilt。它最终在C:\Users\xxxx
而不是node_modules\karma-phantomjs-launcher\node_modules\phantomjs_prebuilt
目录中寻找install.js
。
- Maven的maven-javadoc-plugin在执行jar目标时动态创建了一个
javadoc.bat
,那个BAT文件专门调用了cmd.exe
来执行javadoc。本质上,由于这种行为,从 Maven 构建的 javadoc 执行在 Windows10 中失败。
找到原因了。我工作的地方有一个注册表设置,适用于公司范围内的所有 Windows10 设备。
HKEY_CURRENT_USER\Software\Microsoft\Command 处理器中的自动运行键,可将目录更改为用户的主目录。
删除这个键,然后行为是一致的。