Я был недоволен другими ответами, найденными здесь и в других местах в Интернете, поэтому я потратил значительное количество времени на то, чтобы понять, как это сделать правильно. Вот что я придумала.
- Создайте ключ с именем
.sh и установите для него значение (Default) Shell Script в HKEY_CLASSES_ROOT .
- Создайте ключ с именем
Shell Script в HKEY_CLASSES_ROOT и установите значение (Default) в Shell Script .
- Создайте ключ с именем
shell в HKEY_CLASSES_ROOT\Shell Script .
- Создайте ключ с именем
open в HKEY_CLASSES_ROOT\Shell Script\shell и установите значение (Default) на Run with Cygwin .
- Создайте ключ с именем
command в HKEY_CLASSES_ROOT\Shell Script\shell\open и установите значение (Default) "C:\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico C:\cygwin64\bin\bash.exe -l -c "cd $(dirname \"$(cygpath -u \"%1\")\") ; $(cygpath -u \"%1\") ; exec bash" (изменение C:\cygwin64\ to C:\cygwin\ если вы используете 32-битную версию).
Теперь вы можете просто дважды щелкнуть по файлу .sh, и он будет работать так, как вы ожидаете.
Бонус:
- Создайте ключ с именем
DefaultIcon в HKEY_CLASSES_ROOT\Shell Script и установите значение (Default) в %SystemRoot%\System32\imageres.dll,-68 . Это приведет к применению стандартного значка Batch-файла к вашим сценариям оболочки.
Я также создал файл исправления реестра (Сохранить как Run With Cygwin.reg):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.sh]
@="Shell Script"
[HKEY_CLASSES_ROOT\Shell Script]
@="Shell Script"
[HKEY_CLASSES_ROOT\Shell Script\DefaultIcon]
@="%SystemRoot%\\System32\\imageres.dll,-68"
[HKEY_CLASSES_ROOT\Shell Script\shell]
[HKEY_CLASSES_ROOT\Shell Script\shell\open]
@="Run with Cygwin"
[HKEY_CLASSES_ROOT\Shell Script\shell\open\command]
@="\"C:\\cygwin64\\bin\\mintty.exe\" -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe -l -c \"cd $(dirname \\\"$(cygpath -u \\\"%1\\\")\\\") ; $(cygpath -u \\\"%1\\\") ; exec bash\""