Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
    
Hi, similar question was being discussed at StackOverflow: stackoverflow.com/questions/9637601/… – Roman Hocke Jan 16 '14 at 11:15
    
@Roman: This would be totally off-topic on SO. – Ben Voigt Jan 16 '14 at 12:47
up vote 13 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.

share|improve this answer
    
This works for invoking MSYS2 bash as well. – tharen Jan 9 '15 at 8:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .