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 空格 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/

相关文章:

java - 如何将Eclipse项目从Windows导入到Mac OS

python - 在Windows .bat文件中运行Python脚本

git - 从 `git commit`调用时,Vim使用非标准配置?

regex - 如何使用grep删除单词前缀?

windows - 在Windows 7上使用PowerShell捕获来自COM端口的输出

c++ - 通过映射到的地址获取文件名映射到内存

git - 如何开始使用 git/github 对 Monticello 的支持?

git - sh.exe 阻止 windows cmd 移动命令工作

linux - Bash 脚本 : expansion of argument not using $@ or $*

shell - 如何在shell函数中获得 "set -e"的效果和用处?