Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run a script which can determine whether cmd.exe or gnu mingw shell is running

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?

like image 931
Angus Comber Avatar asked Dec 31 '25 02:12

Angus Comber


1 Answers

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.

like image 140
VonC Avatar answered Jan 02 '26 16:01

VonC



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!