How to run a script which can determine whether cm

2019-02-18 23:24发布

问题:

I want to write a script which runs some git commands on Windows 7 platform.

The users have git tools installed or at least MINGW - the minimalist GNU for Windows.

The trouble is that some users run from the MINGW32 shell and others from cmd.exe.

Example shell using MINGW32 shell:

$ echo $SHELL
/bin/sh

Example shell using cmd.exe

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

Is there any way I can determine the shell from my initial script and then possibly run a windows batch file or otherwise a unix script?

Or another idea is to assume user will use git bash and just check $SHELL is /bin/sh. Is that easier?

回答1:

One trick I used is to name your sh script git-xxx.
(Replace xxx by a sensible name). Start your script with #!/bin/sh.

That way, you can launch 'git xxx' (gitspacexxx) from a git-bash or a CMD session: it will use the MINGW shell every time.

Make sure that git-xxx (no extension) is in your %PATH%.
And you PATH should also include <path/to/git/bin> and <path/to/git/usr/bin>. For instance:

C:\prgs\git\PortableGit-2.7.0-64-bit\bin;C:\prgs\git\PortableGit-2.7.0-64-bit\usr\bin;

That last path has more than 200 unix commands compiled for Windows.