5

Можно ли настроить 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, но я думаю, он должен работать так же.)

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

2 ответа2

4

Я смог взломать что-то вместе для вас. Поместите это в командный файл на вашем пути (я назвал мой 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"
1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .