Wie konfiguriere ich ConEmu, um Cygwin Bash auszuführen?

42

Ich habe eine neue Aufgabe erstellt

{Bash}

mein Heimatverzeichnis übergeben

/ dir "C: \ Users \ TMB \"

und Bash als Anwendung hinzugefügt

C: \ cygwin \ bin \ bash.exe

Wenn ich Bash öffne, können die grundlegenden UNIX / Cygwin-Dienstprogramme nicht verwendet werden. Wie konfiguriere ich ConEmu, um Cygwin Bash auszuführen?

TMB
quelle
Welche ConEmu-Version versuchen Sie? Außerdem unterstützen nicht alle Bash-Versionen das Arbeitsverzeichnis. Git bash - kann, wie ich mich erinnere.
Maximus
Ich konnte nicht herausfinden, wie ich das Arbeitsverzeichnis in meinem Bash-Profil festlegen soll, aber ich glaube, ich habe eine allgemeinere Lösung unter der markierten Antwort gefunden.
TMB
ConEmu x64 120727c.x64
TMB
Mit "Arbeitsverzeichnis" meine ich eines, das du mit / dir switch angibst. Übrigens, haben Sie diese Antwort gelesen? superuser.com/a/482340/139371
Maximus

Antworten:

48

Dies könnte anderen helfen.

Es sieht so aus, als ob die Version 140310 von ConEmu CygWin Bash automatisch erkennt.

Wenn Sie Cygwin installiert haben , nachdem Sie ConEmu installiert haben , werden Sie brauchen Reload ... die Liste der Aufgaben.

  1. Gehe zu Einstellungen ... (Win + Alt + P)
  2. Navigieren Sie zu Ihrer Aufgabenliste (Start> Aufgaben).
  3. Klicken Sie auf die Schaltfläche Neu laden.

Sie sollten nun {CygWin bash} als eine Ihrer Optionen in der Liste der vordefinierten Aufgaben sehen:

Bildschirmfoto von CygWin bash in ConEmu

PS - Wenn diese Methode nicht funktioniert, versuchen Sie, Ihre ConEmu-Einstellungen zurückzusetzen (klicken Sie auf die Schaltfläche Zurücksetzen ... unten im Fenster Einstellungen ).

FilmiHero
quelle
2
Und wenn das Neuladen und Zurücksetzen nicht funktioniert, können wir den Pfad, den Befehl und die Optionen eingeben, wie in Ihrem Screenshot gezeigt.
TMB
%SystemDrive%\cygwin64\bin\sh.exe --login -ifür mich auf 140304 im Preview Channel.
TMB
3
Für mich hat das Klicken auf den Add default tasks...Knopf (rechts über dem ReloadKnopf) den Trick gemacht ...
Hanan N.
9
Beachten Sie, dass sh.exe Ihre .bashrc-Datei nicht als Quelle verwendet. Das kann nur bash.exe. Also benutze ich den Befehl%SystemDrive%\cygwin64\bin\bash.exe --login -i
John Prior
@ JohnPrior's Kommentar ist eigentlich sehr hilfreich. Die PATH-Variable war bei der Verwendung von sh.exe falsch, aber mit bash.exe kann sie jetzt meine Anwendungen finden.
Flungo
7

oder statt

C:\cygwin\bin\bash.exe

verwenden

C:\cygwin\Cygwin.bat
Yura
quelle
Ich denke, das ist in der Tat der einfachste Weg.
Laurent
6

Stellen Sie sicher, dass Bash einen vernünftigen Wert für erhält $PATH. Normalerweise erbt es das von allem, was es aufruft, aber ConEmu ist eine Windows-Anwendung, und alles, was es bereitstellt, ist das, was Sie eingestellt haben %Path%. Im Allgemeinen werden die Cygwin-Pfadverzeichnisse nicht berücksichtigt, sodass Bash nicht weiß, wo er suchen muss ls, & c.

Die Art und Weise, wie ich das lösen würde, wäre, mit welchen Mitteln auch immer ConEmu dies anbietet, --login -ials Befehlszeilenargumente an Bash zu übergeben; dies wird es Ihnen sagen , es als interaktive Login - Shell laufen lassen , so dass er gelesen wird /etc/profile, ~/.profileund ~/.bashrcbeim Start. Nach meiner Erfahrung ist das genug, um es vernünftig zu machen $PATH; Wenn das bei Ihnen nicht funktioniert, können Sie es explizit mit einer Zeile wie PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATHin Ihrer angeben ~/.bashrc.

Aaron Miller
quelle
Dies brachte mir die Hilfsprogramme, die ich als nächstes suchte. Ich wollte nicht auf mein normales Windows-Ausgangsverzeichnis verweisen, sondern /cygdrive/c/cygwin/homelöschte homeund erstellte eine Verknüpfung mit mklink -J home C:\Usersin cmd.exe
TMB
3
Ich bin froh, dass es für dich funktioniert hat. Ich habe nie darüber nachgedacht, eine Junction zu verwenden, um ~ auf c: \ users \ me zu verweisen, aber ich habe es einmal mit einem Symlink getan, und aus dieser Erfahrung gebe ich Ihnen die folgende Warnung: Wenn Sie jemals ComboFix ausführen müssen, um eine Malware zu bereinigen Befall auf Ihrem Computer, werden alle Dateien in c: \ users \ you weggeblasen . Ich habe auf diese Weise einmal alles in meinem Home-Verzeichnis verloren, und mein neuestes Backup war eine Woche alt. Mache nicht den gleichen Fehler wie ich!
Aaron Miller
2

Das ist mein Weg

Erstellen Sie eine neue Aufgabe in ConEmu mit folgendem Befehl

set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -
Summen
quelle
Ihre Lösung funktioniert, und ich mag die Schnittstelle mintty.exe. Können Sie jedoch erklären, warum dies funktioniert? Vor allem, was macht das "&" hier?
Dr. Koutheir Attouchi
0

Ich weiß, das ist eine ziemlich alte Frage, aber ich wollte das trotzdem teilen:

Um die Bash in einem bestimmten Arbeitsverzeichnis zu starten, setzen Sie den Befehl zum Beispiel auf SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"und geben Sie das Arbeitsverzeichnis /dir "..."wie hier beschrieben an .

Felix Bayer
quelle
0

Stellen bashSie cmdsicher, dass in Ihrer PathUmgebungsvariablen das binVerzeichnis von Cygwin hinzugefügt wurde, damit Cygwin-Befehle unabhängig davon, wie Sie sie ausführen, sowie in einer anderen Shell verfügbar sind .
Gehen Sie dann zu Control Panel > System and Security > System(Standard-Hotkey Win+Pause) Advanced system settings > Environment variables. Bearbeiten Sie die Systemvariable für alle Benutzer, Pathnur für Ihren Benutzer. Bearbeiten Sie die Benutzervariable (erstellen Sie sie, falls sie nicht vorhanden ist) Path.
Vorausgesetzt cygwin, dass unter C:\cygwin(möglicherweise cygwin64 für 64-Bit-Cygwin) installiert ist , fügen Sie C:\cygwin\bindem hinzu Path. Beachten Sie, dass, wenn Sie die Systemvariable verwenden Pathund zu binBeginn Cygwins hinzufügen , einige Cygwins Befehle eingebaute schattieren (z. B. werden Cygwins findanstelle von Windows verwendet).find). Ich bevorzuge es, aber wenn Sie dies nicht tun, fügen Sie Cygwins binam Ende Ihrer Liste hinzu Path.

Da die meisten anderen Antworten auch über das ConEmu-Setup sprechen, gebe ich auch meine persönliche Meinung ab.

Ich bevorzuge die Ausführung einer Shell ohne Anmeldung. Unter Linux erhalten Sie beispielsweise eine Anmeldeshell, wenn Sie sich an der Textkonsole oder über ssh anmelden, und eine interaktive Shell, wenn Sie einen Terminalemulator (xterm, konsole usw.) öffnen.

Meine {Bash} -Aufgabe enthält /dir "%CD%"Aufgabenparameter, mit denen das Arbeitsverzeichnis auf das Arbeitsverzeichnis der aktuellen Registerkarte festgelegt wird (z. B. wenn die Bash-Aufgabe von Fern ist). Der Befehl zum Starten der Bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

Unsere --login -iOptionen sind weggelassen, Shell als Nicht-Login interaktiv Shell starten (da es keine nicht-Option Argumente und ohne die Option -c hat, und es ist stdin und stdout mit Anschlüssen verbunden, siehe INVOCATION Abschnitt der bash Manpage mehr Erläuterung). Es liest und führt Befehle aus dem Benutzer rcfile aus ~/.bashrc(nicht /etc/profileoder ~/.bash_profilewie eine Login-Shell, Sie brauchen also nicht, set CHERE_INVOKING=1was nur in Bezug auf relevant ist /etc/profile). Stellen Sie also Ihre Benutzer-Aliase, Shell-Optionen, zusätzliche Umgebungsvariablen usw. auf ~ / .bashrc, wo sie zu Recht hingehören.

Gene Pavlovsky
quelle