Я был недоволен другими ответами, найденными здесь и в других местах в Интернете, поэтому я потратил значительное количество времени на то, чтобы понять, как это сделать правильно. Вот что я придумала.
- Создайте ключ с именем
.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\""