Як налаштувати ConEmu на запуск Cygwin Bash?


42

Я створив нове завдання

{Bash}

передав мій домашній каталог

/ dir "C: \ Користувачі \ TMB \"

і додав bash як додаток

C: \ cygwin \ bin \ bash.exe

Коли я відкриваю Bash, він не може використовувати основні утиліти UNIX / Cygwin. Як налаштувати ConEmu на запуск Cygwin Bash?


Яку версію ConEmu ви пробуєте? Крім того, не всі версії bash підтримують робочий каталог. Git bash - може, як я пам’ятаю.
Максим

Я не міг зрозуміти, як встановити мені робочий каталог у своєму баш-профілі, але я думаю, що знайшов більш загальне рішення нижче відміченої відповіді.
TMB

ConEmu x64 120727c.x64
TMB

Під "робочим каталогом" я маю на увазі один, який ви вказали за допомогою / dir перемикача. До речі, ти читав цю відповідь? superuser.com/a/482340/139371
Максим

Відповіді:


48

Це може допомогти іншим.

Схоже, версія 140310 ConEmu автоматично виявляє CygWin Bash.

Якщо ви встановили Cygwin після встановлення ConEmu, вам потрібно буде перезавантажити ... свій список завдань.

  1. Перейдіть у Налаштування ... (Win + Alt + P)
  2. Перейдіть до списку завдань (запуск> завдання)
  3. Натисніть на Reload ... кнопку.

Тепер ви повинні бачити {CygWin bash} як один із своїх варіантів у списку попередньо визначених завдань:

Знімок екрана CygWin bash в ConEmu

PS - Якщо цей метод не працює, спробуйте скинути налаштування ConEmu (натисніть кнопку Скинути ... внизу вікна налаштувань ).


2
І якщо перезавантаження та скидання не спрацюють, я думаю, ми могли б ввести шлях, команду та параметри, як показано на знімку екрана.
TMB

%SystemDrive%\cygwin64\bin\sh.exe --login -iдля мене на 140304 на каналі попереднього перегляду.
TMB

3
Для мене натискання на Add default tasks...кнопку (праворуч над Reloadкнопкою) зробило трюк ...
Ханан Н.

9
Зверніть увагу, що sh.exe не буде джерелом вашого .bashrc; тільки bash.exe зробить це. Тож я використовую команду%SystemDrive%\cygwin64\bin\bash.exe --login -i
John Prior

@ Коментар JohnPrior насправді дуже корисний. Змінна PATH була помилковою при використанні sh.exe, але з bash.exe тепер вона фактично може знайти мої програми.
flungo

7

або замість

C:\cygwin\bin\bash.exe

використання

C:\cygwin\Cygwin.bat

Я думаю, що це справді найпростіший спосіб.
ларан

6

Переконайтесь, що Bash отримує розумне значення для $PATH; зазвичай це успадковується тим, що він називає, але ConEmu - це програма для Windows, тому все, що він збирається надати, - це все, що ви встановили %Path%. Як правило, це не включає каталоги шляху Cygwin, тому Bash не знає, де його шукати ls, & c.

Я б вирішив це, щоб будь-якими засобами, запропоновані ConEmu для цього, передавати --login -iBash як аргументи командного рядка; це сказати йому , що ви працюєте як інтерактивна оболонка, так що він буде читати /etc/profile, ~/.profileі ~/.bashrcна старті. З мого досвіду, цього було достатньо, щоб надати розумного $PATH; якщо це не працює для вас, ви можете вказати це явно за допомогою рядка, як PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATHу вашому ~/.bashrc.


Це отримало мені утиліти, яких я шукав далі. Я хотів вказати на свій звичайний домашній каталог Windows, /cygdrive/c/cygwin/homeтому я не видалив homeі зробив з'єднання з mklink -J home C:\Usersв cmd.exe
TMB

3
Радий, що зробив цю роботу за вас. Я ніколи не замислювався про те, щоб використовувати перехід до точки ~ на c: \ users \ me, але я одного разу робив це за допомогою посилання, і з цього досвіду я даю вам таке попередження: якщо вам коли-небудь потрібно запустити ComboFix, щоб очистити шкідливе програмне забезпечення зараження на вашій машині, воно вирве будь-які файли в c: \ users \ you . Таким чином я втратив все в домашньому довіднику один раз, і моєму новому резервному копію було тиждень. Не робіть тієї самої помилки, яку я зробив!
Аарон Міллер

2

Це мій шлях

Створіть нове завдання в ConEmu за допомогою наступної команди

set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -

Ваше рішення працює, і мені подобається мати інтерфейс mintty.exe, але чи можете ви пояснити, чому це працює? Тим більше, що тут роблять "&"?
Доктор Кутейр Аттучі

0

Я знаю, це досить старе питання, але я хотів поділитися цим все-таки:

Щоб запустити bash в певному робочому каталозі, просто встановіть команду, наприклад, SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"та вкажіть робочий каталог, як правило, /dir "..."як описано тут .


0

Щоб зробити команди Cygwin доступними з bash, незалежно від того, як ви їх запускаєте, а також з cmdбудь-якої іншої оболонки, переконайтеся, що в Pathзмінній середовища binдодано каталог Cygwin .
Перейдіть до Control Panel > System and Security > System(стандартна швидка клавіша Win+Pause), потім Advanced system settings > Environment variables. Для всіх користувачів відредагуйте системну Pathзмінну, лише для свого користувача - відредагуйте (створіть, якщо її немає) Path.
Якщо припустимо cygwin, що встановлено на C:\cygwin(може бути cygwin64 для 64-бітного Cygwin), додайте C:\cygwin\binдо Path. Пам’ятайте, що якщо ви використовуєте системну Pathзмінну, якщо ви додаєте Cygwin binна початку, деякі команди Cygwin будуть затінювати вбудовані (наприклад, Cygwin findбуде використовуватися замість Windows 'find). Я вважаю за краще це робити, але якщо ви цього не зробите, додайте Cygwin's binнаприкінці свого Path.

Оскільки більшість інших відповідей також говорять про налаштування ConEmu, я також дам свою особисту думку.

Я вважаю за краще використовувати оболонку без входу. Наприклад, в Linux ви отримуєте оболонку входу під час входу на текстовій консолі або через ssh, а інтерактивну оболонку без входу під час відкриття емулятора терміналу (xterm, konsole тощо).

У моїй задачі {Bash} є /dir "%CD%"параметри завдання встановити робочий каталог у робочому каталозі поточної вкладки (наприклад, якщо завдання bash з Far). Команда для запуску bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

--login -iПараметри сповіщення пропущені, оболонка почне працювати як інтерактивна оболонка без входу (оскільки в ній немає аргументів необов'язкових параметрів і без опції -c, а stdin і stdout підключені до терміналів. пояснення). Він буде читати і виконувати команди від користувача файлу конфігурації ~/.bashrc(НЕ /etc/profileабо ~/.bash_profileв вигляді Ввійти оболонки буде, таким чином , вам не потрібно , set CHERE_INVOKING=1яка має відношення тільки щодо /etc/profile). Тож розмістіть псевдоніми користувачів, параметри оболонки, додаткові змінні середовища тощо до ~ / .bashrc, куди вони по праву належать.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.