Git Bash无法识别Salesforce CLI文件夹中的SFDX工具求助
最近碰到个头疼的问题:我手头有个叫SFDX的命令行工具,放在「Salesforce CLI」文件夹里,已经把它的可执行文件路径加到系统环境变量里了,在cmd.exe里跑完全正常,但到Git Bash里就执行不了,连VS Code也找不到它。先给大家看看各终端的输出情况:
cmd.exe 运行正常的验证
在cmd里执行命令,一切都没问题:
> path [...]C:\Program Files\Java\jdk1.8.0_162\bin;[...]C:\Program Files\Salesforce CLI\bin > java -version java version "1.8.0_162" > sfdx --version sfdx-cli/6.11.0-9a1ef8794d (windows-x64) node-v8.9.4
Git Bash 中遇到的核心问题
在Git Bash里执行echo $PATH后,我发现了问题所在——Windows路径里的「Program Files」带空格,Git Bash会把这个带空格的路径拆成两个部分,导致系统找不到C:\Program Files\Salesforce CLI\bin这个路径,自然就无法执行sfdx命令了。
下面给大家分享几个解决办法:
方法1:临时修复Git Bash的PATH变量
直接在Git Bash里执行以下命令之一,把带空格的路径用引号或者转义符处理:
# 用引号包裹带空格的路径 export PATH="$PATH:/c/Program Files/Salesforce CLI/bin" # 或者用反斜杠转义空格 export PATH=$PATH:/c/Program\ Files/Salesforce\ CLI/bin
执行完后再试一下$ sfdx --version,应该就能正常输出版本信息了。不过这个方法只是临时生效,重启Git Bash后会回到原来的状态。
方法2:永久配置Git Bash的环境变量
如果想让配置永久生效,我们可以修改Git Bash的用户配置文件:
- 打开Git Bash,执行
nano ~/.bashrc(或者用你习惯的编辑器,比如vim) - 在文件的末尾添加上面的export命令(二选一就行)
- 按
Ctrl+O保存文件,Ctrl+X退出编辑器 - 执行
source ~/.bashrc让配置立刻生效,或者直接重启Git Bash
方法3:解决VS Code找不到SFDX的问题
VS Code默认会继承系统的环境变量,但有时候会因为Git Bash的路径问题或者自身加载机制的问题导致找不到SFDX。可以试试这两个方案:
- 先重启VS Code,让它重新加载一遍系统环境变量,很多时候这就够了
- 如果还是不行,就手动指定SFDX的路径:
- 打开VS Code的设置(快捷键
Ctrl+,) - 在搜索框里输入「salesforcedx-vscode-core.sfdx-cli-path」
- 填入SFDX可执行文件的完整路径,比如
C:\Program Files\Salesforce CLI\bin\sfdx.cmd - 保存设置后重启VS Code,应该就能正常识别了
- 打开VS Code的设置(快捷键
额外小技巧:彻底避免路径空格问题
如果不想每次都折腾空格的问题,最一劳永逸的办法就是把「Salesforce CLI」文件夹重命名成不带空格的名字,比如SalesforceCLI,然后更新系统环境变量里的路径为C:\Program Files\SalesforceCLI\bin。这样不管是cmd、Git Bash还是VS Code,都能毫无障碍地找到这个工具了。
内容的提问来源于stack exchange,提问作者Todd

