Открыть Cygwin в определенной папке

Как создать ярлык Cygwin, который откроет Cygwin в определенной папке? Это избавит вас от необходимости вводить

cd /cygdrive/c/Users/Tom/Desktop/

каждый раз при запуске Cygwin.

Ответ 1

При установке Cygwin (или, если вы уже установили его, загрузите его снова и снова запустите программу установки для запуска обновления), убедитесь, что вы выбрали пакет chere в категории "Оболочки".

После запуска Cygwin откройте терминал Cygwin (как администратор) и введите команду: chere -i -t mintty -s bash.

Теперь вы должны иметь "Bash Prompt Here" в контекстном меню Windows правой кнопкой мыши.

(mintty - это терминал Cygwin по умолчанию. Если вы не выберете его с -t, ваша "Bash Prompt Here" будет использовать тот же терминал, что и командная строка Windows, что предотвращает горизонтальное изменение размера.)

Ответ 2

Вот что я использую. Для этого не требуется chere пакет или реестр. Работает в Windows 7.

Перейдите в папку "Отправить":

C:\Users\<your_user_name>\AppData\Roaming\Microsoft\Windows\SendTo

Создайте ярлык с именем Bash Here, имеющий это в поле Target:

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico  C:\cygwin\bin\bash.exe  -l -c "cd \"$0\" ; exec bash"

В проводнике Windows щелкните правой кнопкой мыши папку и выберите Send To > Bash Here.

И вот противоположный трюк, открывающий проводник Windows в текущем каталоге bash. Создайте этот псевдоним:

alias winx='/cygdrive/c/Windows/explorer.exe /e,\`cygpath -w .\`'

Примечание. Часть выше cygpath -w . заключена в обратные тики.

Теперь просто введите winx в приглашении bash, и там появится Win Explorer.

Примечание. Если winx направляет вас в папку с вашими документами, попробуйте

alias winx='/cygdrive/c/Windows/explorer.exe /e,`cygpath -w $PWD`'

Ответ 3

Я создал файл .reg, который помещает опцию "Открыть Cygwin Here" в контекстном меню правой кнопки мыши. Это зависит от пакета Cygwin "chere", который вы можете установить с помощью apt-cyg, если вы не установили его в начальной настройке.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe"

Ответ 4

С терминала cygwin запустите эту команду:

echo "cd your_path" >> ~/.bashrc

.bashrc script запускается при открытии нового сеанса bash. Код выше с изменением каталога your_path при открытии новой сессии cygwin.

Ответ 5

Для cygwin64 или установок без такой возможности вы можете использовать следующую команду в записи реестра (предполагая, что окна связаны с вашим путем, также если в каталоге установки cygwin указано c:\cygwin64)

C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd "`cygpath "%V"`"; bash'

Работает на Windows 7 и 8 Файл реестра доступен для загрузки здесь: http://tomkay.me/blog/Cygwin64---Open-Here-18

Windows Registry Editor Version 5.00
; Open cygwin to folder
; http://tomkay.me - Tom Kay

[HKEY_CLASSES_ROOT\Folder\shell\open_cygwin]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Folder\shell\open_cygwin\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'"

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'"

Ответ 6

Если вы хотите, чтобы этот каталог был по умолчанию, просто добавьте оператор cd в ваш файл ~/.profile.

То, что я обычно делаю, это использовать этот метод для установки моего обычного каталога, а также определить псевдонимы для моих общих случаев:

alias tom="cd /users/tom"

или ваш эквивалент. Это позволяет мне быстро менять каталоги.

Ответ 7

Как сказал two7s_clash, сначала нужно установить пакет chere и настроить mintty:

  1. Откройте терминал Cygwin от имени администратора
  2. apt-cyg install chere
  3. chere -i -t mintty

Теперь вы можете открыть cygwin в определенном каталоге, щелкнув правой кнопкой мыши в проводнике Windows (контекстное меню) и выбрав "Bash Prompt Here".

Вы также можете открыть cygwin из определенного каталога с помощью командной строки Windows:

  1. Открыть окно командной строки
  2. Перейдите (cd) в пользовательский каталог
  3. Выполните C:\cygwin64\bin\mintty.exe C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

    Эта команда откроет cygwin с текущим каталогом, взятым из командной строки.

FreeCommander

Эту команду также можно использовать для открытия cygwin из пользовательского файлового менеджера, например, FreeCommander.

Чтобы открыть cygwin с текущим каталогом, взятым из FreeCommander, сделайте следующее:

  1. Инструменты → Избранные инструменты → Редактировать любимые инструменты... (Ctrl + Shift + Y)
  2. Добавить новую панель инструментов (+ значок), ярлык: Вставить

    • Имя: cygwin
    • Программа или папка: C:\cygwin64\bin\mintty.exe
    • Начальная папка: %ActivDir%
    • Параметр: C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

Вы можете добавить собственный ярлык для открытия Cygwin из FreeCommander:

  1. Сервис → Определить сочетания клавиш
  2. Прокрутите вниз до "Любимый инструмент 01" (или "Любимый инструмент N")
  3. Назначьте новую комбинацию клавиш: я использую Ctrl + Shift + T

Отличная ссылка: MinTTY Wiki, статья Советы: Начиная с определенного каталога

Ответ 8

Я использую и Icon для запуска моего cygwin без пакета chere.

  • Создайте ярлык на моем рабочем столе для терминала cygwin.
  • R-щелкните значок и выберите свойства.
  • На вкладке ярлыка используйте это для TARGET: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  • Для START IN, введите путь к папке dir/, где вы хотите запустить cygwin. т.е. C:\some\dir\name\here

Ответ 9

Найдите файл Cygwin.bat и создайте контент следующим образом:

@echo off
set newpath=%cd:\=/%
pushd "%~dp0"
chdir bin
bash --login -i -c "cd \"%newpath%\"; exec bash"

Добавьте путь к cygwin.bat в среду PATH.

Теперь в любой папке вы можете ввести адресную строку:

cygwin

Также вы можете ввести его, когда вы в cmd.exe

Ответ 10

Я использовал следующие строки кода для запуска zsh в текущем каталоге в Win7.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="\"C:\\Programmieren\\cygwin64\\bin\\mintty.exe\" -i /Cygwin-Terminal.ico /bin/zsh --login -c 'cd \"%V\";zsh'"

Заметьте, что я использовал% V вместо% L или% 1 (так как оба не работали для меня)

Ответ 11

Когда требуется новая установка, я создаю переменную пользовательского окружения Windows с именем HOME и назначает ей путь где бы ни находились "Мои документы".

Установщик cygwin обнаруживает переменную HOME, автоматически переводит ее в cygpath и выбирает ее как каталог ~.

Это отлично работает для каждой рабочей станции, которую я профессионально использовал за последние 5 лет (около 3 или 4, Win7). Я всегда был единственным пользователем на этих машинах, не могу сказать, что это за эффект.

Ответ 12

Я сделал скрипт редактирования реестра, чтобы открыть Cygwin в любой папке, которую вы щелкнули правой кнопкой мыши. Это на моем GitHub.

Вот мой GitHub

Пример кода RegEdit из Github для 64-битных машин:

REGEDIT4

[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere]
@="&Cygwin Bash Here"

[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere]
@="&Cygwin Bash Here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""

Ответ 13

Открыть терминал Cygwin в качестве администратора

В powershell (с использованием шоколада):

choco install cyg-get

В cygwin Будет установлено меню правой кнопки мыши

cyg-get install chere
chere -i

Теперь вы можете щелкнуть правой кнопкой мыши и использовать "Bash Prompt Here" в любой папке.

Ответ 14

В ответе, использующем реестр, я обнаружил, что в Windows 2008 R2 SP1 необходимо удалить фон из пути. Кроме того, поскольку chere и xhere не являются частью cygwin64, вот решение, которое работает как для объединения реестра, так и для решений Send To. Замените "E:\cygwin64" на место установки:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash\command]
@="E:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico --exec /bin/bash.exe --login -c \"cd '%1' ; exec bash -rcfile ~/.bashrc\""

Ответ 15

На моей Windows-машине он не принимал:

chere -i -t mintty

Поскольку оболочка mintty недоступна, но у вас может быть выбор из разных других оболочек, таких как ash bash cmd dash mksh pdksh posh tcsh zsh passwd.

поэтому я использовал:

chere -i -s bash

Ответ 16

Вы можете просто открыть терминал cygwin и написать: cd и после перетаскивания n отпустить нужную папку и войти!

Ответ 17

Это единственное решение для реестра Cygwin64, которое работало для меня в Windows 8.1:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\mintty]
@="Mintty from Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\mintty\command]
@="C:\\cygwin64\\bin\\mintty.exe -h always -e /usr/bin/ash -c 'cd  \"$(/usr/bin/cygpath \"%L\")\";  exec /usr/bin/bash  '"

Убедитесь, что вы изменили свой путь "C:\cygwin64" при необходимости.

Ответ 18

Я создал командный файл и поместил его в каталог Cygwin/bin. Этот script был разработан таким образом, что позволяет устанавливать/удалять записи реестра для открытия выбранных папок и дисков в Cygwin. Подробнее см. Ссылку http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html.

update: это решение аналогично ранним предложениям, но все манипуляции с реестром Windows скрыты в script.

Выполните команду для установки

cyghere.bat /install

Выполните команду для удаления

cyghere.bat /uninstall

Ответ 19

Вы можете добавить значок в оболочку, добавив поле Icon к пути к вашему файлу Cygwin.ico.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Cygwin"
"Icon"="\"C:\\cygwin64\\Cygwin.ico\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe"

Ответ 20

Создайте файл bash, скажем move.sh, который имеет следующий код C:\cygwin64\bin\run.exe -p /bin bash runFile.sh Это запускает Cygwin и выполняет runFile.sh, присутствующий в каталоге bin Cygwin Предположим, вы хотите перейти в конкретный каталог, скажем E:\code то runFile.sh имеет следующий код cd E: cd code

Ответ 21

Чтобы создать ярлык Windows, который запускает терминал Cygwin в каталоге по вашему выбору, попробуйте следующее:

  • Щелкните правой кнопкой мыши на рабочем столе Windows, выберите "Создать", а затем выберите "Ярлык".

  • Для определения местоположения элемента введите следующий текст, изменив mintty путь по мере необходимости и подставив имя нужного каталога, где указано.

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd DESIRED-DIRECTORY; exec bash'
    

    Например, OP будет использовать следующий текст:

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd /cygdrive/c/Users/Tom/Desktop/; exec bash'
    
  • Нажмите кнопку "Далее'.

  • Введите желаемое имя для ярлыка и нажмите "Готово".

На рабочем столе можно разместить несколько ярлыков для открытия терминалов Cygwin в различных часто используемых каталогах.

Вдохновлено решением, опубликованным на Как открыть оболочку Cygwin в определенном каталоге из Netbeans? на superuser.com.

Ответ 22

@echo off
C:
SET mypath=%~dp0
c:\cygwin\bin\bash -c "cd '%mypath%'; export CHERE_INVOKING=1; exec /bin/bash --login -i"

Скопируйте выше команды в текстовый файл и сохраните его как .bat в любой из "интересующих вас страниц". Он должен открыть cygwin в "интересующей папке".

Ответ 23

на основе ответа @LindseyD Я создал простой файл BAT, который открывает cygwin в текущем каталоге, он может быть полезен (для меня это). Предполагая, что у вас есть каталог cygwin bin в PATH.

FOR /F %%x IN ('sh -c pwd') DO bash -l -i -c 'cd %%x; exec bash'

Ответ 24

У меня также была проблема с git, которая использовалась для "кражи" моих команд cygwin - поэтому мне нужно было запустить
C:\cygwin\bin\mintty.exe -
но после установки chere и выполнения chere -i -t mintty -f в качестве администратора (см. выше) вы можете просто использовать:
 C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
Я добавил это в Total Commander в качестве настраиваемой кнопки (щелкните правой кнопкой мыши на панели > добавить...), и он работает очень хорошо.

Ответ 25

Я не знаю, почему мне пришлось потратить столько времени, но это работает для меня на выигрыше 10, 64 бит:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""

Ответ 26

Вероятно, самый простой:

1) Создать файл foo.reg

2) Вставить содержимое:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty]
@="open mintty"

[HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty\command]
@="cmd /C mintty"

3) Выполнить foo.reg

Теперь просто щелкните правой кнопкой мыши в любой папке, нажмите open mintty, и в этой папке появится mintty.

Ответ 27

Лучше всего делать, как показано ниже:

HKEY_CLASSES_ROOT\Directory\shell\BashHere
Enter Data: Bash Here

HKEY_CLASSES_ROOT\Directory\shell\BashHere\command
Enter Data: 

cmd.exe /c C:\cygwin\bin\bash.exe --login -c "cd '%1'; exec /bin/bash"