I need to run a cygwin shell script without changing the working directory, from outside the cygwin environment.

If I run just \path\to\bash.exe -c command, then the path is not set correctly and cygwin programs can't be found.

If I use the --login option, bash sets the path correctly, but also changes to my home directory.

What options should I use to launch bash to keep the current working directory, and also find cygwin executables?

link|improve this question

70% accept rate
feedback

1 Answer

up vote 2 down vote accepted

It turns out that the cygwin default /etc/profile checks for an environment variable named CHERE_INVOKING and inhibits the change of directory if set.

So

set CHERE_INVOKING=1
\path\to\bash.exe -l -c command

has the desired behavior.

link|improve this answer
Its CHERE_INVOKING in the version of cygwin I'm using. – P.T. Apr 16 at 22:08
@P.T.: So it is. I'll update my answer. – Ben Voigt Apr 16 at 23:01
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.