1

Тема: Cygwin/Bash: Запуск Cygwin в заданном каталоге из Проводника

В иностранной литературе это называется Cygwin Here. По сути - запуск Cygwin в заданном каталоге из Проводника.

Мне надоело запускать Cygwin и переходить до нужного каталога. Алиасы специально создавать я не хотел. Гугл помог. Более того, я собрал все решения Интернета и реализовал новое. На мой взгляд стало чуточку лучше.

Я набросал небольшой пакетный скрипт, который позволяет мне запускать Cygwin несколькими способами:
-- правым кликом из ПРоводника (а также файл-менеджеров таких как Total Commander, Double Commander и прочих)
-- из командной строки
-- из пользовательского меню FAR

Исходный код
По ссылке тот же код, но без купюр - с английскими комментариям.


@echo off

if /i "%~1" == "/HELP" (
 echo:Cygwin Here
 echo:
 echo:Usage:
 echo:%~n0 [/HELP ^| /INSTALL ^| /UNINSTALL ^| /LIST ^| "folder"]
 goto :EOF
)

if /i "%~1" == "/INSTALL" (
 for %%p in ( "Drive" "Directory" "Directory\Background" ) do (
  reg add "HKEY_CLASSES_ROOT\%%~p\shell\Cygwin Here\command" /ve /d "\"%~f0\" \"%%V\"" /f
 )
 goto :EOF
)

if /i "%~1" == "/UNINSTALL" (
 for %%p in ( "Drive" "Directory" "Directory\Background" ) do (
  reg delete "HKEY_CLASSES_ROOT\%%~p\shell\Cygwin Here" /f
 )
 goto :EOF
)

if /i "%~1" == "/LIST" (
 for %%p in ( "Drive" "Directory" "Directory\Background" ) do (
  reg query "HKEY_CLASSES_ROOT\%%~p\shell\Cygwin Here" /s
 )
 goto :EOF
)

if not "%~1" == "" pushd "%~1" || goto :EOF

start "Cygwin Here" "%~dp0mintty.exe" -i /Cygwin-Terminal.ico -h start "%~dp0bash.exe" -l -c "cd '%CD%' ; exec bash"

popd

Описание

параметры командной строки
/HELP - вывод справки
/INSTALL - инсталлировать скрипт в Проводик
/UNINSTALL - деинсталлировать скрипт из Проводника
/LIST - вывести список измененных записей в реестре

Другие значения подразумеваются как путь до каталога, в котором Cygwin должыен быть запущен. Пустой список параметров значит запуск Cygwin в текущем каталоге.

На мой взгляд, у этого решения два явных преимущества
1. манипуляции с реестром скрыты от конечного пользователя
2. один скрипт для нескольких целей (запуск из разных источников, установка и удаление)

Установка скрипта для Проводника

1. открыть каталог Cygwin, содержащий бинарные файлы (обычно C:\cygwin\bin)
2. создать файл cyghere.bat и вставить скрипт из примера выше
3. сохранить его и запустить команду

c:\cygwin\bin\cyghere.bat /install

Если ваша капия Cygwin установлена в другом месте - просто подкорректируйте путь.

Установка для FAR

1. запустить FAR
2. подредактировать пользовательское меню: F2, Ins, ENTER (кнопка Добавить команду)
3. В диалоге ввести следующее (все символы латинские)

горячая клавиша: C
метка: Cygwin Here
команды: C:\cygwin\bin\cyghere.bat

4. закрыть диалог, нажав OK

( 2 * b ) || ! ( 2 * b )