Windows环境变量 与 Windows下多个Linux环境切换
2012-11-16 TECH Bash etc\profile git make make install mingw Msys msysGit ssh Windows Environment Variables Windows环境变量 优先级
一、Windows环境变量的优先级与查找过程(Windows Environment Variables)
相同变量名优先级: 系统变量 > 用户变量
调用程序时,查找过程
1、首先,按路径先后顺序搜索,返回最先找到的
2、其次,如果最先找到的程序带有配置文件则加载对应配置文件后调用,否则直接调用这个程序
比如:
Bash,在CMD内调用Bash,则会自动加载Bash的配置文件一半为(etc/profile),
在Bash内继续调用其他的程序,则按照Bash配置设定的规则。
例:
Bash: D:\Bash\sh.exe,Bash配置制定 HOME 为D:\Bash\,D:\Bash\ 中包含vim7.3.exe
PATH: D:\vi7.2;D:\Bash\;
执行结果:
CMD -> vi -> D:\vin7.2\vim7.2.exe
CMD -> Bash -> vi -> D:\Bash\vi7.3\vim7.3.exe
若改变PATH为
PATH: D:\Bash\;D:\vi7.2;
执行结果:
CMD -> vi -> D:\Bash\vim7.3.exe
CMD -> Bash -> vi -> D:\Bash\vi7.3\vim7.3.exe
二、系统中含有多个类Linux环境时的环境切换
比如本人系统中包含 MinGW自带的MSYS1.0 和 msysGit自带的Linux环境
如果多个环境同时加载,执行make;make install;的时候,会由于多个程序的版本新旧问题产生各种莫名的错误。
建议解决办法: 在默认的系统PATH中不包含任何Linux环境,而通过批处理切换对应的环境。
例:
[1] D:\MinGW\msys\1.0\bin\
[2] D:\Git\bin\
C:\Windows\linux.bat 加载 [1]
@CLS @SET ___linux=D:\MinGW\msys\1.0\bin @IF DEFINED ___load ( @echo. @echo [-] Linux Tools Already Loaded. @echo. ) ELSE ( @SET ___load="1" @SET Path=%___linux%;%path%; @echo. @echo [+] Linux Tools Loaded. @echo. ) @COLOR 0F @bash --version @echo. @CMD /C "bash --login -i -c "cd \"%CD%\";exec bash"
另外值得注意的是在Win7系统中MinGW自带的MSYS1.0配置文件(MinGW\msys\1.0\etc\profile)中 HOME 部分有误,
git、ssh相关配置都存在 C:\Users\[用户名]\ 目录中,
修改profile,找到下面一段
# Set up USER's home directory if [ -z "$HOME" ]; then HOME="/home/$LOGNAME" fi
修改为以下内容即可
# Set up USER's home directory # WIN7中用户根目录为: C:\Users\[用户名]\ if [ -z "$HOME" -o ! -d "$HOME" ]; then HOME="$USERPROFILE" fi
暂无评论