Uruchom bash shell (cygwin) z poprawną ścieżką bez zmiany katalogu

12

Muszę uruchomić skrypt powłoki cygwin bez zmiany katalogu roboczego spoza środowiska cygwin.

Jeśli ucieknę \path\to\bash.exe -c command, wtedy ścieżka nie jest ustawiona poprawnie i nie można znaleźć programów cygwin.

Jeśli korzystam z --login opcja, bash ustawia ścieżkę poprawnie, ale także zmienia mój katalog domowy.

Jakich opcji należy użyć, aby uruchomić bash, aby zachować bieżący katalog roboczy, a także znaleźć pliki wykonywalne cygwin?

Ben Voigt
źródło
Hi podobne pytanie było omawiane na StackOverflow: stackoverflow.com/questions/9637601/…
Roman Hocke
@Roman: To byłoby całkowicie nie na temat SO.
Ben Voigt

Odpowiedzi:

18

Okazuje się, że domyślne cygwin /etc/profile sprawdza zmienną środowiskową o nazwie CHERE_INVOKING i blokuje zmianę katalogu, jeśli jest ustawiony.

Więc

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

ma pożądane zachowanie.

Ben Voigt
źródło
Działa to również w celu wywołania bashu MSYS2.
tharen