Bash Prompt Here utility idea...

david lars clayton
Tue Jun 19 12:40:00 GMT 2001

In my opinion, the most useful powertoy/Win 98 addon is the "DOS Prompt Here"
toy.  For those of you who don't know what this does, it allows you to call up
a command prompt at a directory selected by the mouse by selecting "DOS Prompt
Here" from the right mouse button menu.

So, one dark Sunday evening (well, it was more like Monday morning by that time)
I thought to myself, "wouldn't it be cool to have a Bash Prompt Here tool?"  So 
here it is, folks.  Here's a guide to setting up your cygwin to do everything th
at the DOS Prompt Here lets you do, but with Bash.

Step 1 - Init Scripts
We want to preserve the initial environment, but to stop /etc/profile from
cd'ing to the $HOME directory _only_ when we use the Bash Prompt tool.  It must
behave normally when we start the program any other way.  This means that we 
can't use "bash --login" and that adding a command with -c would make things a
little difficult, but it also means that we can't change /etc/profile too much.

I created a file called /etc/profile.bash_here which would be called as the main
rcfile when we start bash.  In this, I have two commands:

export BASH_HERE=1
. /etc/profile

Rather than create a whole new profile script from scratch (or a duplicate of
/etc/profile) which may have caused problems later on, I simply modified the
/etc/profile script so that the line which reads:

cd "$HOME"

is changed to:

if [ ! $BASH_HERE ]; then
  cd "$HOME"

Should be fairly self explanatory (look at the manpage for test if it isn't).

Step 2 - Batch File
The batch file will be called every time you do the right click and select
"Bash Prompt Here".  Here's what it should look like...

REM -- Start of batch file --

@echo off
cd %1
c:\cygwin\bash -c "/bin/bash --rcfile /etc/profile.bash_here"

REM -- End of batch file

Step 3 - The Registry
Next we modify the registry.  Fire up Regedit, and create a new key under
HKEY_CLASSES_ROOT.Directory.Shell and call it BashHere.  Select this new key,
and change the value of "(Default)" to "&Bash Prompt Here" by double clicking
on it. Next, create a new key under your newly created BashHere key, and call it
"Command".  Again, select the new "Command" key, and change the value of 
"(Default)" to the following:

C:\WINDOWS\COMMAND.COM /E:4096 /c C:\cygwin\bashhere.bat %1

And that's it!  Simple, huh?

Dave Clayton

Want to unsubscribe from this list?
Check out:

More information about the Cygwin mailing list