cmd “xx“不是内部命令,不可运行,但是PowerShell可执行该命令

花了一整个下午踩的坑,有必要记录一下

之前在学习mysql的时候,cmd命令运行mysql就容易出现这种问题,后面在用户变量又配置了一遍,就好了。


今日错误是clone了一个项目下来,通过PowerShell启动执行npm i命令安装依赖时报错“node”不是内部命令,但是在PowerShell中输入 node -v 是没有问题的。

检索错误发现安装依赖时有个必须通过cmd的管理员执行才能安装,所以在PowerShell中间接就报"node"不是内部命令。

然后通过cmd执行node -v 果然报 "node"不是内部命令。

于是又去配置了一遍环境变量和用户变量,还是无法执行命令。

重装nodejs还是无果。

最后看到高赞的博客说检查系统环境变量path值中里有没有下面这三个,我开始以为没有,就直接粘到后面了,再次cmd运行 还是报错。检查了一下,下面这三条值我原本就有。

%SystemRoot%\system32;
%SystemRoot%; %SystemRoot%\System32\Wbem; %SYSTEMROOT%\System32\WindowsPowerShell\v1.0;

过了会我想了想要不把path里值全部删了重新来一遍好了,就把所有的path值剪贴到txt文本上,防止丢失,但是我还是不死心,又检查了一遍。好笑的就来了。

path值中:每个分号 ; 对应一条值

原本是一长串的值,我在txt文本中以 ; 分割为一行一行的, 就看到有条值的前面有个引号 !!

呵呵,真是可笑啊。

一个引号引发的错误!

把引号删除掉,cmd就可执行命令了。

但是这又引起了我的思考,开始在执行node命令时报错,但是执行java命令就不报错。这是为什么呢?

再次检查系统环境变量path值,发现java的路径放在path值里的最前面,刚好错过了有引号发生错误的位置。

可以理解为引号有误的值的后面的所有路径都会受到影响。

所以以后发现某个命令不是内部命令时,就把那个命令的执行路径放到path的最前面,就不会出问题的!

在这里插入图片

还有一点

在配置某个命令环境变量时,在系统环境变量path中加入之后不行,在用户环境变量中加入肯定也没用。

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值