在使用cmd时,虽然我确实安装了响应的软件或插件或命令,但是却提示“不是内部或外部命令,也不是可运行的程序”。网上的答案也是千奇百怪,于是这里做一个详细说明。
首先,因明确这是环境变量的问题,什么时环境变量呢?
环境变量 环境是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量来更好的运行进程。更简单的一种理解是:我是老大,我让你去找张三过来给我做事,但是没告诉你他在哪,于是你就在我们这一带去找,可是不一定找的到啊,找到了好说,你把他带来给我交差;找不到呢?你就回来告诉我说找不到。那么更好的办法是什么呢?当然是我告诉你一个他所在的地方,你再去找,这样一下就能找到了。
通过cmd查看环境变量,直接输入 path即可,如下所示:
另外,环境变量一般分为用户环境变量和系统环境变量,用户环境变量只对当前用户起作用,而系统环境变量是对这台电脑上的所有用户都起作用,一般我们直接设置系统环境变量就好。
而dos操作往往与环境变量有莫大的关系。我们经常用的用于检测网络状况的ping命令就是如此。下面举例我们进行实战!(大家看看就好,如果不熟悉就不要跟着我的步子走了,以免出现错误。
第一步:windows+R,输入cmd,在输入ping www.baidu.com,(实际上ping就是这样依赖于环境变量的命令)结果如下所示:
第二步:windows+r,输入control,进入控制面板,进入系统,进入高级系统设置,这时弹出了系统属性框,在点击tab选项卡中的高级,点击其中的环境变量,这时显示了用户的环境变量和系统的环境变量,一般我们只在意系统的环境变量,找到系统环境变量中的PATH,选中后,点击删除,然后点击确定。这时在按照第一步的方法,我们看到输出如下所示:
为什么第一次没有ping通并提示“'ping'不是内部或外部命令,也不是可运行的程序批处理文件”呢? 这正是因为ping命令并不处于C:UsersAdministrator中,并且刚刚我把环境变量中的Path删除,所以它就找不到ping命令了(这时拐过头看我在文章开始提到的例子)。然后我又进入了C:WindowsSystem32中,这时又ping了以下,ping通了,这是因为虽然我没给Path,但是他会在当前文件夹下寻找,并且在本地还找到了,所以也就ping成功了。 那么也就是说,ping命令是处于C:WindowsSystem32中的。我们去找一下,发现的确如此,如下所示:
第三步:这时知道了Path路径,那我们只要把这个路径添加到系统变量中即可,如第二步中的步骤所示,我们先进入系统变量,发现刚刚被我删掉的Path已经没有了,这时就需要手动去创建了,创建的过程如下:
这时我们再去ping,发现已经可以ping通了。
讲道理,在我们正确安装了命令、包或应用程序之后如果无法正确执行,并提示“不是内部或外部命令,也不是可运行的程序或批处理文件。”的错误我们都可以使用这种方法来解决,即首先找到该命令(或包、或应用程序)之后,将该路径追加到Path下,注意一定是追加,而不要重新创建,否则他会覆盖掉之前的Path。
下面我们再举一个nodejs环境的例子。
第一步:首先我已经把nodejs自动创建的Path删除(注意:一般情况下,在安装了nodejs后其Path会自动创建,不需要人工添加,但是避免不了有时候出的各种bug啊!),但是该应用程序还是存在的,然后测试node的版本,结果如下所示:
我们发现果然出现了这样的问题。
第二步:我们可以通过右键nodejs应用程序选择打开文件所处的位置,确定node的安装路径,然后再cmd中测试,如下所示:
第三步:就是将该路径添加到Path后面,方法如下:先选中Path,然后点击编辑(注意上一个的末尾要加分号):
然后,我们在cmd中测试以下,结果如下:
第一个命令得到了node的版本,第二个命令进入了node的执行环境,我在其中输入了一条语句,且得到了执行。注意:一旦node安装完成,npm也就自动安装完成了。
下面再举一个我在安装grunt时遇到的坑,就是安装好grunt-cli后,却无法使用grunt的命令。如下所示:
第一步:在管理员权限下运行cmd,输入 npm install -g grunt-cli
第二步:检测是否安装成功,即输入grunt,这时提示如下:
第三步:我们已经安装了grunt,为什么还提示呢? 想必到这里大家都知道原因,我们进入系统环境变量,发现的确没有出现响应的Path,我们进行测试,如下所示:
可以看到,在上面的文件下,就已经可以使用了。
第四步:追加Path;然后检测grunt的版本如下:
小技巧:
1.在cmd中快速查看Path,只需输入set,即可,如下所示:
我们可以看到最长的那一行就是Path了。
然而更简便的方法是 set Path,这样就只会显示一条Path信息了,如下所示:
当然也可以是set其他的,如set OS可以得到操作系统的名称。
更为重要的是,我们还可以直接在cmd中添加Path,方法是“set 变量名=%变量名%;变量内容”。如,为Path添加一个新的路径,输入“ set Path=%path%;d:”即可将d:添加到path中。如下所示
这时我们已经可以看到d:被添加进入了。这方面的更多知识可以看这篇文章。