Запуск Cygwin в произвольном каталоге?

Запуск Cygwin в произвольном каталоге?

Можно ли настроить Cygwin так, чтобы при вызове Cygwin.bat из произвольного пути с использованием произвольного собственного метода запуска Windows (cmd.exe, командная строка Total Commander) запускался bash, подготовленный в этом каталоге?

Например, если я запущу cmd.exe и сделаю следующее (при условии, что Cygwin.bat есть в моем PATH):

C:\Users\Me>cd testdir

C:\Users\Me\testdir>dir /b
myfile1
myfile2

C:\Users\Me\testdir>Cygwin

Откроется окно Cygwin, и я окажусь там, где остановился:

me@here /cygdrive/c/Users/Me/testdir
$ ls
myfile1*  myfile2*

me@here /cygdrive/c/Users/Me/testdir

Как видите, когда я получаю приглашение Cygwin, я уже нахожусь в testdir, а не в /home/me.

(Более типичный сценарий, в котором я собираюсь это использовать, — запуск Cygwin из командной строки Total Commander, но, полагаю, это должно работать так же.)

Как этого добиться?

решение1

Мне удалось кое-что для вас взломать. Поместите это в пакетный файл в вашем path (я назвал свой cygwin.batи вызвал его, введя cygwin.bat):

@echo off
set pth=%CD:~2,99%
set pth=%pth:\=/%
set drv=%CD:~0,1%
set "fullpath=/cygdrive/%drv%%pth%"
C:\cygwin\bin\bash.exe --login -i -c "cd ""%fullpath%""; exec /bin/bash"

решение2

Этотпроще .batфайл ( .cmdв моем случае) - этоработает отличнодля меня:

c:\CygWin\bin\bash.exe --login -i -c "export CD='%CD%'; cd \"$CD\"; exec /bin/bash"

Протестировано в работе на:

  • КМД.
  • Total Commander.
  • Удалённый сеанс SSH.
  • Меню «Пуск» -> «Выполнить» (в данном случае открывается в C:\Users\Me).

Связанный контент