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

标签 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。这样容易吗?

最佳答案

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

这样,您就可以启动“git xxx” ' ( git space xxx ) 来自 git-bash 或 CMD session :它每次都会使用 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 命令。

关于windows - 如何运行可以确定 cmd.exe 或 gnu mingw shell 是否正在运行的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651196/

相关文章:

git - 无法通过 ssh 连接到 BitBucket

git - 多平台项目存储库设计策略

linux - Unix - 创建文件夹和文件的路径

linux - Gammu runonreceive 不传递变量

linux - 这个 sed 命令行有什么作用?

c++ - 如何使用 C++ 获取 Windows DNS 后缀搜索列表

windows - 内核定时器对象和同步

windows - 检索 Win64 异常表中的所有条目

windows - GDI+后台线程有什么作用?

git - 可以全局添加ssh-add吗