Запустите .sh файл при двойном щелчке на Windows с Cygwin
16649
Rotareti
Я создал файл сценария .sh на своем компьютере с Windows. Я хотел бы запустить его по двойному клику. Если я открываю терминал Cygwin и запускаю его вручную с помощью команды «sh», он запускается без проблем.
Когда я связываю окончания файла .sh с c: \ cygwin \ bin \ sh.exe и дважды щелкаю на script.sh, терминал выскакивает на миллисекунду и исчезает безрезультатно. Я думаю, что проблема в том, что sh.exe должен быть запущен так:
C:\cygwin64\bin\sh.exe --login –i
Но как я могу сказать Windows, чтобы запустить .sh файлы, как это?
Вы должны добавить %1параметр, чтобы заставить работать ассоциацию, например, вот так (кавычки необходимы для работы с путями, имеющими встроенные пробелы):
C:\cygwin64\bin\sh.exe -li "%1"
Вопрос задавался раньше в нескольких местах; это может быть полезно:
Однако окно закроется, когда сценарий завершится, если только вы не сделаете это в сценарии, например, следуя за ним с помощью readкоманды (поскольку ассоциация передает сценарий только в качестве аргумента). Вот несколько дискуссий по этому аспекту:
Где именно вы устанавливаете эту ассоциацию? Я нахожусь на Windows 10 и, похоже, только сможет связать программу с расширением файла, но не добавление / редактирование параметров, которые будут использоваться.
Totte Karlsson 6 лет назад
0
Некоторые спрашивали это [здесь] (https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings-winpc/file-associations-and-parameter-passing/2cc65f1a-6f45-4091-a027-5d77c99877e8 ). [This] (https://superuser.com/questions/136133/how-do-i-set-advanced-file-associations-in-windows-7) похож, но старше.
Thomas Dickey 6 лет назад
0
4
Drew Chapin
Я был недоволен другими ответами, найденными здесь и в других местах в Интернете, поэтому я потратил значительное количество времени на то, чтобы понять, как это сделать правильно. Вот что я придумала.
Создайте ключ с именем .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.
Теперь вы можете просто дважды щелкнуть по файлу .sh, и он будет работать так, как вы ожидаете.
Бонус:
Создайте ключ с именем DefaultIconпод HKEY_CLASSES_ROOT\Shell Scriptи установите (Default)значение %SystemRoot%\System32\imageres.dll,-68. Это приведет к применению стандартного значка Batch-файла к вашим сценариям оболочки.
Я также создал файл исправления реестра (Сохранить как Run With Cygwin.reg):
Put the following in a batch file, and select it for "Opens with" for ".sh" files:
@echo off C:\cygwin\bin\bash.exe -lc "cd ""%cd%""; ""$(cygpath -u "%1")"""
The 'cd ""%cd%"";' part ensures that the shell script will always start in the same directory from which it was called, even if your Bash profile tries to start in your home directory. The multiple layers of double quotes are necessary to escape backslashes and allow for spaces in path names.
An alternative to the login (-l) option, for making sure non-builtin commands are available, is to add the bin directory to your path:
@echo off set path=%path%;C:\cygwin\bin bash -c """$(cygpath -u "%1")"""