win环境变量因第三方软件导致path不一致的问题分析
win系统中,(以win10为例),path环境变量起到了非常重要的作用,配置不当,会导致在命令行中出现“不是内部命令or外部命令”的提示。
win10中path值有两个:一个是系统变量path和用户变量path,下面我们通过几个途径查看path的值,结果如下:通常情况下, 当一个用户登陆系统后: path是该用户自己的用户变量path和系统变量path的并集。
方式1
当该用户通过win+R,输入命令cmd的方式进入系统自带的命令行环境中后,输入
echo %PATH%
,此时输出的path的值也是用户变量path和系统变量path的并集,并且系统变量位置在前,用户变量位置在后。 方式2
当该用户通过win+R,输入命令cmder的方式进入第三方命令行软件cmder中后,输入
echo %PATH%
,此时输出的path的值中,除了用户变量path和系统变量path之外,还有cmder软件添加的path内容(顺序:cmder自身的,系统的,用户的): //cmder添加的行D:\cmder\bin; D:\cmder\vendor\conemu-maximus5\ConEmu\Scripts; D:\cmder\vendor\conemu-maximus5; D:\cmder\vendor\conemu-maximus5\ConEmu;
系统变量path
用户变量path
备注:path里面cmder自身的变量所在顺序是由cmder定义的,但是系统变量和用户变量两者之前的顺序基本上不能更改。
方式3
当该用户通过AHK软件配置的快捷键(2017.5.15日编译好的AhkScriptManager.exe文件),启动第三方命令行软件cmder后,输入
echo %PATH%
,此时输出的path的值中,除了用户变量path和系统变量path之外,还有cmder软件添加的path内容,最后还有AHK自己添加的path: //cmder添加的行D:\cmder\bin; D:\cmder\vendor\conemu-maximus5\ConEmu\Scripts; D:\cmder\vendor\conemu-maximus5; D:\cmder\vendor\conemu-maximus5\ConEmu;
//AHK添加的行D:\AhkScriptManager\3rd;
//丢失了部分近期安装的软件的路径系统变量path
用户变量path
备注:我使用的AhkScriptManager是基于github上的开源项目。
但是在今天(2017.11.18日文件)通过AHK提供的快捷键进入cmder后,运行python的时候发现,找不到python命令,所以才有了这篇文章。方式4
经过分析后,怀疑原因在于,AhkScriptManager.exe文件是在很久之前用AHK软件编译好的。path值在编译AhkScriptManager.ahk文件后,已经固定了,所以之后安装的python等软件的路径就无法加入了。于是我由重新编译了AhkScriptManager.ahk文件。
当该用户通过现在时间(2017.11.18日文件)重新编译AhkScriptManager.ahk文件,得到新的AhkScriptManager.exe文件,此时的AHK软件配置的快捷键,启动第三方命令行软件cmder后,输入echo %PATH%
,此时输出的path的值中,方式3总的所有值之外,近期安装的几个软件的路径也都在这个path里面了: //cmder添加的行D:\cmder\bin; D:\cmder\vendor\conemu-maximus5\ConEmu\Scripts; D:\cmder\vendor\conemu-maximus5; D:\cmder\vendor\conemu-maximus5\ConEmu;
//AHK添加的行D:\AhkScriptManager\3rd;
//丢失了部分近期安装的软件的路径系统变量path
用户变量path
总结经验
以后再安装软件后,如果想通过AHK软件提供的快捷键方式启动,就必须重新编译该AhkScriptManager.ahk文件(因为这个ahk文件中,存在path值修改的问题),否则就会出现 ”不是内部或外部命令,也不是可运行的程序“的 问题。