Windows系统Git Bash无法识别yarn命令问题求助
根本原因
- Git Bash 属于类 Unix Shell,执行命令时的可执行文件优先级为:无后缀可执行文件 >
.exe>.cmd等 Windows 专属后缀文件 - 通过
npm i -g yarn全局安装时,npm 会在全局 npm 目录(默认路径为C:\Users\<你的用户名>\AppData\Roaming\npm)生成两套 yarn 启动入口:- 无后缀的
yarn/yarnpkg文件:为 Unix 系统设计的 Shell 脚本,不兼容 Windows 路径解析逻辑 yarn.cmd/yarnpkg.cmd文件:为 Windows 终端设计的批处理脚本,适配 Windows 路径规则
- 无后缀的
- 在 Git Bash 中输入
yarn时,会优先调用无后缀的 Unix 版脚本,该脚本解析 node 路径时会混用 Windows 与 Unix 的路径分隔符,最终误将 Windows 版 node 可执行文件当作 Shell 脚本执行,因此抛出line 1: This: command not found报错。而 cmd、PowerShell 默认优先识别.cmd后缀文件,因此运行正常。
永久解决方案
任选以下任意一种操作即可:
方案1:添加 Git Bash 别名(最便捷,无全局文件修改)
- 打开 Git Bash,执行
nano ~/.bashrc打开用户终端配置文件 - 在文件末尾新增一行:
alias yarn='yarn.cmd' - 按
Ctrl+O回车确认保存,按Ctrl+X退出编辑器 - 执行
source ~/.bashrc让配置立即生效
后续 Git Bash 中输入yarn会自动映射为yarn.cmd执行,使用体验和其他终端完全一致。
方案2:删除冗余的 Unix 版 yarn 启动文件
- 打开资源管理器,进入全局 npm 目录
C:\Users\<你的用户名>\AppData\Roaming\npm - 找到无后缀的
yarn和yarnpkg两个文件(注意不要误删后缀为.cmd的同名文件),直接删除即可 - 重启 Git Bash 后,终端会自动识别
.cmd后缀的 yarn 启动文件,运行正常。
如果你使用 NVM 管理 Node 版本,只需进入 NVM 对应版本的全局 npm 目录执行相同删除操作即可。
内容的提问来源于stack exchange,提问作者Shivangam Soni
相关产品推荐
相关产品推荐

