These two programs are not in any way alternatives to one another. Bash is a shell, and MinTTY is a terminal emulator. MinTTY normally runs your user's shell within itself, which may or may not be Bash. That is to say, you normally use the two programs together.
If you examine the MinTTY shortcut that Cygwin's setup.exe
builds, you will find that it isn't a simple launch of the program. It runs it as mintty -
, which tells MinTTY to run your user's shell as a "login" shell.
This is the problem you have run into. If you run bash.exe
without options, you just get the naked shell, with its default configuration, which means it doesn't do things like add the Cygwin /bin
to your PATH. Likewise, if you run mintty.exe
without options, it runs your user's shell without options. When you give a dash to mintty.exe
instead of a program name, it runs your user's shell as a login shell: bash -l
, rather than just bash
. That option causes Bash to read in a bunch of startup scripts immediately after launch, which sets up the command PATH and a lot more besides.
Thus, if you had to run bash.exe
outside MinTTY for some reason, you could say bash -l
to get behavior somewhat closer to that of bash.exe
when run via mintty -
. You would lose out on all of the terminal emulator features, however. MinTTY has much better copy-paste behavior than Windows' console does, for example, particularly on Windows 8 and older.
(Windows 10 included a much-improved console, but MinTTY is still better, IMHO, particularly when working with Cygwin.)
Say man mintty
at a Cygwin command prompt for a fuller explanation of all the things MinTTY does for you. This particular question was answered in the INVOCATION section of the MinTTY manual page.