É possível configurar o Cygwin para que, se eu chamar o Cygwin.bat de um caminho arbitrário usando um método de inicialização arbitrário nativo do Windows (cmd.exe, linha de comando do Total Commander), ele inicie o bash preparado nesse diretório?
Por exemplo, se eu executar cmd.exe e fizer o seguinte (desde que Cygwin.bat esteja no meu PATH
):
C:\Users\Me>cd testdir
C:\Users\Me\testdir>dir /b
myfile1
myfile2
C:\Users\Me\testdir>Cygwin
A janela do Cygwin é aberta e estou exatamente onde parei:
me@here /cygdrive/c/Users/Me/testdir
$ ls
myfile1* myfile2*
me@here /cygdrive/c/Users/Me/testdir
Como você pode ver, quando recebo o prompt do Cygwin, já estou em testdir
, não em /home/me
.
(O cenário mais típico em que vou usar isso é executar o Cygwin na linha de comando do Total Commander, mas acho que deve funcionar da mesma forma.)
Como conseguir isso?
Responder1
Consegui hackear algo juntos para você. Coloque isso em um arquivo em lote no seu caminho (chamei meu cygwin.bat
e chamei digitando 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"
Responder2
Essemais simples .bat
arquivo ( .cmd
no meu caso) étrabalhando bempara mim:
c:\CygWin\bin\bash.exe --login -i -c "export CD='%CD%'; cd \"$CD\"; exec /bin/bash"
Testado trabalhando em:
- DMC.
- Comando total.
- Sessão SSH remota.
- Menu Iniciar -> Executar (neste caso abre em
C:\Users\Me
).