Можно ли настроить 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
).