如何 运行 一个可以确定 cmd.exe 或 gnu mingw shell 是否为 运行ning 的脚本

How to run a script which can determine whether cmd.exe or gnu mingw shell is running

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

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

麻烦的是一些用户 运行 来自 MINGW32 shell 而其他用户来自 cmd.exe.

示例 shell 使用 MINGW32 shell:

$ echo $SHELL
/bin/sh

示例 shell 使用 cmd.exe

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

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

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

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

开始你的脚本

这样,您可以从 git-bash 或 CMD 会话:每次都会使用 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 命令。