我想编写一个在 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/