Halbwegs ordentliches Terminal unter Windows - LukasKalbertodt/programmieren-in-rust GitHub Wiki

Unter Windows gibt es normalerweise nur "cmd", eine Art Terminal, in der die Wenigsten gerne programmieren würden. Schön wäre es also, ein Terminal, ähnlich zu Ubuntu, unter Windows nutzen zu können.

Hier gibt es nun diverse Möglichkeiten. Hier werde ich versuchen, grob zu erklären, wie man sich selber ein Terminal einrichten kann (auch das, was ich in der Vorlesung benutze). Aber dies ist wieder keine einfache Schritt-für-Schritt Anleitung, sondern erfordert ein bisschen Gehirn.

Das Unix Backend

Wir möchten eine Linux-artige Umgebung haben. Dazu brauchen wir irgendeine Art von Backend, wobei ich grundsätzlich mit zwei Möglichkeiten gearbeitet habe:

  • Cygwin
  • Linux Subsystem for Windows

Cygwin ist eine Art Unix-Emulator, der aber mit Windows Binaries arbeitet. Das hat den Vorteil, dass man normale Windowsprogramme (auch mit grafischer Oberfläche) starten kann. So funktioniert das auch mit meinem subl foo.rs.

Das "Linux Subsystem for Windows" wurde erst in diesem Jahr veröffentlicht. Es ist eine Art Ubuntu in Windows drin, welches direkt von Microsoft released wurde. Der Vorteil hier ist, dass ziemlich alles sofort funktioniert und man sich wie im Ubuntu-Terminal fühlt. Allerdings kann man daraus nicht ohne weiteres Windowsprogramme starten. Man kann allerdings auch grafische Ubuntu-Programme starten, wenn man sich einen X-Server installiert.

Ich nutze meist Cygwin, aber muss gestehen, dass die Installation und Einrichtung einiger Programme teilweise ein wenig nervig ist. Auch treten manchmal komische Fehler auf (z.B. ist der RUST_BACKTRACE immer leer). Letztendlich müsst ihr euch entscheiden.

Cygwin

Erstmal muss Cygwin von hier installiert werden. Im Setup muss man auch gleichzeitig Programme auswählen, die man installieren möchte. Im Installer solltet ihr mindestens "git" als "zu installieren" markieren.

Später lohnt es sich, noch apt-cyg zu installieren. Das ist ein Packetmanager ähnlich zu apt-get aus Ubuntu und erleichtert das Installieren weiterer Pakete (die man sonst mit dem Installer installieren müsste). Informationen zur Installation gibt es hier.

Linux Subsystem for Windows

Wie bereits gesagt, stellt Microsoft direkt dieses Feature bereit. Man muss es trotzdem noch in Windows aktivieren, Anleitungen dazu gibt es z.B. hier. Hinweis: Es funktioniert nur mit Windows 10.

Später ist es eventuell sinnvoll, einen Xserver unter Windows zu installieren, um grafische Programme anzeigen zu können. Hier bietet sich "xming" an.

ConEmu: Das Terminalfenster und Einrichtung

Nun könnte man die Terminalapplikationen benutzen, die direkt mit den oben genannten Unix-Emulatoren kommt ("Cygwin Terminal" und "Bash on Ubuntu on Windows"). Diese sind aber teilweise suboptimal. Daher nutze ich "ConEmu", ein Wrapper um andere Terminal-artige Programme. Zum Beispiel kann man in ConEmu auch "cmd" starten, auch wenn das jetzt nicht besonders sinnvoll ist.

Wenn wir ConEmu installieren, erkennt es automatisch ein installiertes Cygwin und auch ein installiertes Linux Subsystem. In den Einstellungen kann man unter "Startup" auswählen, welcher "Task" gestartet werden soll. Wichtig sind hier "{Bash::CygWin Bash}" und "{Bash: UbuntuSubSys}" (oder so ähnlich).

Weiterhin kann man dann ConEmu nach seinen Wünschen einrichten. Um z.B. in Cygwin ungefähr die Prompt aus Ubuntu zu bekommen fügt man folgendes zu seiner .bashrc hinzu:

export PS1="\[\033[1;32m\]\u\[\033[0m\]@\[\033[1;32m\]fooooooo:\[\033[1;34m\]\w\[\e[0m\] \$ "

Ab hier muss man sich nun einige Dinge selber einrichten. Dazu gehört auch auf jeden Fall, wichtige Pfade (wie den Pfad von subl.exe) zum $PATH hinzuzufügen. Dies macht man auch mit export am besten in der .bashrc. Auf die Windowsfestplatte "C:" kann man mit dem Pfad /cygdrive/c/ zugreifen. So kann man also alle Pfade vom originalen Windowssystem erreichen. Sinnvoll ist sicher auch, sich einige Links einzurichten, um schnell auf wichtige Ordner zuzugreifen.

git sollte schon funktionieren. Rust kann man sich entweder neu installieren oder die Windows Version nutzen, in dem man sich Links zu .cargo und .multirust einrichtet.

Hier habe ich keine Zeit, alles genau zu erklären. Man muss sich leider selber dadurchkämpfen (mit viel Googlen!).