Jak skonfigurować ConEmu do uruchamiania Cygwin Bash?

42

Stworzyłem nowe zadanie

{Grzmotnąć}

przekazałem mój katalog domowy

/ katalog „C: \ Users \ TMB \”

i dodał bash jako aplikację

C: \ cygwin \ bin \ bash.exe

Kiedy otwieram Bash, nie można korzystać z podstawowych narzędzi UNIX / Cygwin. Jak skonfigurować ConEmu do uruchamiania Cygwin Bash?

TMB
źródło
Jakiej wersji ConEmu próbujesz? Ponadto nie wszystkie wersje bash obsługują katalog roboczy. Git bash - może, jak pamiętam.
Maximus
Nie mogłem wymyślić, jak ustawić mój katalog roboczy w moim profilu bash, ale myślę, że znalazłem bardziej ogólne rozwiązanie poniżej zaznaczonej odpowiedzi.
TMB
ConEmu x64 120727c.x64
TMB
Przez „katalog roboczy” mam na myśli jeden określony za pomocą przełącznika / dir. BTW, czy przeczytałeś tę odpowiedź? superuser.com/a/482340/139371
Maximus

Odpowiedzi:

48

To może pomóc innym.

Wygląda na to, że wersja 140310 ConEmu automatycznie wykrywa CygWin Bash.

Jeśli zainstalowałeś Cygwin po zainstalowaniu ConEmu, musisz przeładować ... swoją listę zadań.

  1. Przejdź do Ustawień ... (Win + Alt + P)
  2. Przejdź do listy zadań (uruchomienie> zadania)
  3. Kliknij na Reload ... przycisku.

Powinieneś teraz zobaczyć {CygWin bash} jako jedną z opcji na liście predefiniowanych zadań:

Zrzut ekranu bash CygWin w ConEmu

PS - Jeśli ta metoda nie działa, spróbuj zresetować ustawienia ConEmu (kliknij przycisk Resetuj ... u dołu okna Ustawienia ).

FilmiHero
źródło
2
A jeśli ponowne ładowanie i resetowanie nie działają, myślę, że moglibyśmy wprowadzić ścieżkę, polecenie i opcje, jak pokazano na zrzucie ekranu.
TMB
%SystemDrive%\cygwin64\bin\sh.exe --login -idla mnie 140304 na kanale podglądu.
TMB
3
Dla mnie kliknięcie Add default tasks...przycisku (tuż nad Reloadprzyciskiem) zrobiło lewę ...
Hanan N.
9
Zauważ, że sh.exe nie źródło twojego .bashrc; zrobi to tylko bash.exe. Używam więc polecenia%SystemDrive%\cygwin64\bin\bash.exe --login -i
Jan Prior
@ Komentarz JohnPrior jest bardzo pomocny. Zmienna PATH była niepoprawna podczas używania sh.exe, ale dzięki bash.exe może teraz znaleźć moje aplikacje.
flungo
7

lub zamiast

C:\cygwin\bin\bash.exe

posługiwać się

C:\cygwin\Cygwin.bat
Yura
źródło
Myślę, że to naprawdę najprostszy sposób.
laurent
6

Upewnij się, że Bash otrzymuje rozsądną wartość dla $PATH; zazwyczaj dziedziczy to po tym, co to nazywa, ale ConEmu jest aplikacją Windows, więc wszystko, co dostarczy, to wszystko, co masz ustawione %Path%. Zasadniczo nie obejmuje to katalogów ścieżek Cygwin, więc Bash nie wie, gdzie szukać ls, i c.

Sposób, w jaki rozwiązałbym to, byłby, za pomocą wszelkich środków, jakie ConEmu oferuje, aby przekazać to --login -ijako argumenty linii poleceń do Basha; to powie to używasz go jako interaktywną powłokę logowania, więc będzie to czytać /etc/profile, ~/.profilei ~/.bashrcna początku. Z mojego doświadczenia wynika, że nie było na tyle, aby nadać mu rozsądny $PATH; jeśli to nie działa, możesz to wyraźnie określić za pomocą linii takiej jak PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATHw twoim ~/.bashrc.

Aaron Miller
źródło
To dało mi narzędzia, których szukałem dalej. Chciałem wskazać mój normalny katalog domowy systemu Windows, /cygdrive/c/cygwin/homewięc nie usunąłem go homei utworzyłem połączenie z mklink -J home C:\Userscmd.exe
TMB
3
Cieszę się, że wykonało to za Ciebie. Nigdy nie myślałem o użyciu skrzyżowania w celu wskazania ~ na c: \ users \ me, ale kiedyś zrobiłem to za pomocą dowiązania symbolicznego i na podstawie tego doświadczenia daję ci następujące ostrzeżenie: jeśli kiedykolwiek będziesz musiał uruchomić ComboFix, aby usunąć złośliwe oprogramowanie infekcja na twoim komputerze, wysadzi wszystkie pliki w folderze c: \ users \ you . W ten sposób straciłem wszystko w moim katalogu domowym, a moja najnowsza kopia zapasowa miała tydzień. Nie popełnij tego samego błędu, co ja!
Aaron Miller
2

To jest mój sposób

Utwórz nowe zadanie w ConEmu za pomocą następującego polecenia

set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -
Brzęczenie
źródło
Twoje rozwiązanie działa, a ja lubię mieć interfejs mintty.exe, ale czy możesz wyjaśnić, dlaczego to działa? W szczególności, co tutaj robi „&”?
Dr Koutheir Attouchi,
0

Wiem, że to dość stare pytanie, ale i tak chciałem się z tym podzielić:

Aby rozpocząć bash w określonym katalogu roboczym, po prostu ustaw komendę na przykład SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"i określ katalog roboczy normalnie, /dir "..."jak opisano tutaj .

Felix Bayer
źródło
0

Aby komendy Cygwin były dostępne bash, niezależnie od tego, w jaki sposób je uruchamiasz, a także z cmdjakiejkolwiek innej powłoki, upewnij się, że do Pathzmiennej środowiskowej bindodano katalog Cygwin .
Idź do Control Panel > System and Security > System(standardowy skrót Win+Pause), a następnie Advanced system settings > Environment variables. Dla wszystkich użytkowników edytuj Pathzmienną systemową , tylko dla swojego użytkownika - edytuj (utwórz, jeśli nie istnieje) Pathzmienną użytkownika .
Zakładając, że cygwinjest zainstalowany w C:\cygwin(może być cygwin64 dla 64-bitowego Cygwin), dodaj C:\cygwin\bindo Path. Pamiętaj, że jeśli użyjesz Pathzmiennej systemowej , jeśli dodasz Cygwin binna początku, niektóre polecenia Cygwina będą cienia wbudowanych (np. Cygwin findzamiast Windowsa zostaną użytefind). Wolę to zrobić, ale jeśli nie, dodaj Cygwin's binna końcu swojego Path.

Ponieważ większość innych odpowiedzi mówi również o konfiguracji ConEmu, dam również swoją osobistą opinię.

Wolę uruchomić powłokę niezalogowaną. Na przykład w Linuksie otrzymujesz powłokę logowania, gdy logujesz się w konsoli tekstowej lub przez ssh, oraz interaktywną powłokę bez logowania, gdy otwierasz emulator terminala (xterm, konsola itp.).

Moje zadanie {Bash} ma /dir "%CD%"parametry zadania, aby ustawić katalog roboczy na katalog roboczy bieżącej karty (np. Jeśli zadanie bash z Daleka). Polecenie rozpoczęcia bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

--login -iOpcje powiadomień są pomijane, powłoka uruchomi się jako powłoka interaktywna bez logowania (ponieważ nie ma argumentów innych niż opcja i bez opcji -c, a jej stdin i stdout są podłączone do terminali, więcej informacji w sekcji INROCATION na stronie podręcznika bash wyjaśnienie). Odczyta i wykona polecenia z pliku rc użytkownika ~/.bashrc(nie /etc/profilelub ~/.bash_profiletak, jak zrobiłaby to powłoka logowania, więc nie musisz tego dotyczyć set CHERE_INVOKING=1tylko w odniesieniu do /etc/profile). Więc umieść aliasy użytkownika, opcje powłoki, dodatkowe zmienne środowiskowe itp. W ~ / .bashrc, gdzie słusznie należą.

Gene Pawłowski
źródło