Cygwin: Executa um script no mintty / bash

2

Inicialmente perguntado no SO.com, mas eu o fechei. Eu acho melhor se encaixar no SU.com. Por favor, diga-me se também não é o lugar certo.

Eu quero adicionar um menu de contexto a um arquivo .sh para executá-lo no cygwin.

Eu tentei manipular o comando padrão "Open Cygwin here":

C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"

Infelizmente, tudo que consigo é uma janela que se fecha de novo imediatamente.
Além disso, não tenho 100% de certeza, qual é o propósito e o significado dos argumentos do xhere.

Isso está funcionando:

C:\cygwin\bin\bash.exe %1

Mas eu gostaria de ter o mintty como janela de terminal.

Pergunta final:
Existe uma maneira de adicionar uma string de comando a ser executada na string "Open Cygwin here"?

    
por Nippey 14.04.2014 / 15:08

2 respostas

2

Obrigado a @vaz_az por me manter motivada.

O problema com o cygwin é que ele requer caminhos de estilo POSIX.

Isso significa que você precisa traduzir o parâmetro de arquivo %1 que é fornecido pelo windows. Isso pode ser feito usando a ferramenta cygpath . O código a seguir mostra um 1-liner que pode ser usado como comando no regedit:

C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '$(/bin/cygpath "%1")'

Na linha seguinte, há alguns exemplos, o que pode ser feito com um 1-liner:

#Simple
C:\cygwin\bin\mintty.exe -e bash -l -c '$(cygpath "%1")'

#Fire and Forget (With 1 second delay at the end to read any messages)
C:\cygwin\bin\mintty.exe -e bash -l -c '$(cygpath "%1"); echo DONE; sleep 1'

#With logging to static file
C:\cygwin\bin\mintty.exe -l C:\cygwin\home\Nippey\cygwin.log -e /bin/bash -l -c '$(cygpath "%1")'

#With interactive shell after execution (Unfortunately the -i parameter of bash does not work together with -c, so you have to start a sub-shell)
C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '$(cygpath "%1"); bash'
    
por 13.05.2014 / 10:55
0

Você deve tentar com o seguinte comando: C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '%1' .

    
por 18.04.2014 / 12:18