Как мне настроить ConEmu для запуска Cygwin Bash?
Я создал новое задание
{} Баш
прошел мой домашний каталог
/dir "C:\Users\TMB\"
и добавил Bash в качестве приложения
C: \ Cygwin \ Bin\bash.exe
Когда я открываю Bash, он не может использовать базовые утилиты UNIX/Cygwin. Как мне настроить ConEmu для запуска Cygwin Bash?
6 ответов
Это может помочь другим.
Похоже, версия 140310 ConEmu автоматически обнаруживает CygWin Bash.
Если вы установили Cygwin после того, как установили ConEmu, вам необходимо перезагрузить... ваш список задач.
- Зайдите в настройки... (Win + Alt + P)
- Перейдите к вашему списку задач (Автозагрузка> Задачи)
- Нажмите на кнопку Обновить...
Теперь вы должны увидеть {CygWin bash} как один из вариантов в списке предопределенных задач:

PS - Если этот метод не работает, попробуйте сбросить настройки ConEmu (нажмите кнопку " Сброс" в нижней части окна " Настройки").
Или вместо
C:\cygwin\bin\bash.exe
использование
C:\cygwin\Cygwin.bat
Убедитесь, что Bash получает разумное значение для $PATH; обычно он наследует это от того, что его вызывает, но ConEmu - это приложение для Windows, поэтому все, что он собирается предоставить, - это то, для чего вы настроили %Path%, Обычно это не относится к каталогам пути Cygwin, поэтому Bash не знает, где искать lsи т. д.
Я бы решил, что с помощью любых средств, которые ConEmu предлагает для этого, передать --login -i в качестве аргументов командной строки для Bash; это скажет вам, что вы используете его как интерактивную оболочку входа в систему, поэтому он будет читать /etc/profile, ~/.profile, а также ~/.bashrc на старте. По моему опыту, этого было достаточно, чтобы придать этому смысл $PATH; если это не работает для вас, вы можете указать это явно с помощью строки вроде PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATH в вашем ~/.bashrc,
Это мой путь
Создайте новое задание в ConEmu с помощью следующей команды
set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -
Я знаю, что это довольно старый вопрос, но я все равно хотел поделиться этим:
Чтобы запустить bash в определенном рабочем каталоге, просто установите команду, например, SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal" и указать рабочий каталог нормально через /dir "..." как описано здесь.
Чтобы сделать команды Cygwin доступными из bashнезависимо от того, как вы его запускаете, а также от cmd или любой другой оболочки, убедитесь, что ваш Path переменная окружения имеет Cygwin's bin каталог добавлен.
Идти к 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's bin в начале, некоторые команды Cygwin будут затенять встроенные (например, Cygwin's 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 опции опущены, shell будет запускаться как интерактивная оболочка без входа в систему (поскольку она не имеет аргументов без опций и без опции -c, а ее stdin и stdout подключены к терминалам, обратитесь к разделу INVOCATION на man-странице bash для более подробного объяснения.). Он будет читать и выполнять команды от пользователя rcfile ~/.bashrc (не /etc/profile или же ~/.bash_profile как оболочка входа в систему, поэтому вам не нужно set CHERE_INVOKING=1 который имеет отношение только к /etc/profile). Поэтому поместите ваши псевдонимы пользователя, параметры оболочки, дополнительные переменные окружения и т. Д. В ~/.bashrc, где они по праву принадлежат.