如何运行可确定cmd.exe或gnu mingw shell是否正在运行的脚本

时间:2016-01-07 09:13:07

标签: windows git shell cmd mingw

我想编写一个在Windows 7平台上运行一些git命令的脚本。

用户安装了git工具或至少MINGW - Windows的极简主义GNU。

问题是某些用户从MINGW32 shell运行,而其他用户则从cmd.exe运行。

使用MINGW32 shell的示例shell:

$ echo $SHELL
/bin/sh

使用cmd.exe的示例shell

>echo %COMSPEC%
C:\Windows\system32\cmd.exe

有什么方法可以从我的初始脚本中确定shell,然后可能运行Windows批处理文件或其他unix脚本?

或者另一个想法是假设用户将使用git bash并且只检查$ SHELL是/ bin / sh。那更容易吗?

1 个答案:

答案 0 :(得分:2)

我使用的一个技巧是命名你的sh脚本git-xxx (用合理的名称替换xxx)。使用#!/bin/sh启动您的脚本。

这样,您就可以启动' git xxx'来自git-bash或CMD会话的(git space xxx):每次都会使用MINGW shell。

确保git-xxx中有%PATH%(无扩展名) 您PATH还应包含<path/to/git/bin><path/to/git/usr/bin>。 例如:

C:\prgs\git\PortableGit-2.7.0-64-bit\bin;C:\prgs\git\PortableGit-2.7.0-64-bit\usr\bin;

最后一个路径有超过200个为Windows编译的unix命令。