【问题标题】:How to run a script which can determine whether cmd.exe or gnu mingw shell is running如何运行可以确定 cmd.exe 或 gnu mingw shell 是否正在运行的脚本
【发布时间】:2016-04-11 14:38:27
【问题描述】:

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

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

问题是一些用户从 MINGW32 shell 运行,而另一些用户从 cmd.exe 运行。

使用 MINGW32 外壳的示例外壳:

$ echo $SHELL
/bin/sh

使用 cmd.exe 的示例 shell

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

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

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

【问题讨论】:

标签: windows git shell cmd mingw


【解决方案1】:

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

这样,您可以从 git-bash 或 CMD 会话启动 'git xxx' (gitspacexxx):它每次都会使用 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;

最后一条路径包含为 Windows 编译的 200 多个 unix 命令。

【讨论】:

  • 我尝试使用名为 git-abc.sh 的脚本,使用 #!/bin/sh topline 和一些 git 命令,但如果我从 cmd.exe 运行,我会得到:致命:哦哦。您的系统根本没有报告任何 Git 命令。
  • @AngusComber 不是git-xxx.shgit-xxx(无扩展名)。您可以通过键入 git xxxgit 空格 xxx)调用该脚本
猜你喜欢
  • 2011-09-15
  • 2018-08-25
  • 1970-01-01
  • 2012-06-03
  • 2010-12-12
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多