2

Изначально спрашивал на SO.com, но я его закрыл. Я думаю, что это лучше подходит для SU.com. Пожалуйста, скажите мне, если это не то место.

Я хочу добавить контекстное меню в файл .sh, чтобы запустить его в Cygwin.

Я попытался изменить стандартную команду "Открыть Cygwin here":

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

К сожалению, все, что я получаю, это окно, которое немедленно закрывается снова.
Кроме того, я не уверен на 100%, какова цель и смысл аргументов xhere.

Это работает:

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

Но я бы хотел, чтобы в качестве терминального окна была мята.

Последний вопрос:
Есть ли способ добавить командную строку для выполнения в строку "Открыть Cygwin здесь"?

2 ответа2

2

Спасибо @vaz_az за поддержку.

Проблема с Cygwin заключается в том, что ему требуются пути в стиле POSIX.

Это означает, что вам нужно перевести файловый параметр %1 , предоставленный окнами. Это можно сделать с помощью инструмента cygpath . В следующем коде показан 1-строчный символ, который можно использовать в качестве команды в regedit:

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

В следующей строке есть несколько примеров того, что можно сделать с помощью 1-строки:

#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'
0

Попробуйте выполнить следующую команду: C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '%1' .

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