|
Cygwin ist die kostenlose Portierung der
Shell-Konsole (bash)
und vieler leistungsfähiger Linux-Dienstprogramme auf Windows. ♥ Die Installation von Cygwin ist sehr empfehlenswert ! |
Damit läuft nicht Linux aus Windows, wie manche meinen. Man kann jedoch die altersschwache DOS-Konsole wesentlich erweitern. |
Konsole |
Text-Fenster zur Systemsteuerung |
| Cygwin | Was ist Cygwin - und was nicht |
| Installation | von Cygwin auf Windows |
| Konfiguration | Permanente Einrichtung individueller Ergänzungen |
| Umgebung | Konfiguration der Windows-Umgebung |
| Start | Arbeit mit Cygwin |
| Update | Installation neuer Module und Versionen |
| GCC | Der GNU Allzweck-Compiler - Gut aber leider nicht kompatibel |
| Detailliert ausgearbeitete Praxis-Beispiele | |
| Eigene spezialisierte Konsolen-Befehle | |
| Praxis-Beispiele zur Anwendung von Cygwin | |
| Zugriff auf die Windows Registry-Datenbank | |
| SFU | Alternative: Microsoft Windows Services for UNIX (SFU) |
| Links |
Ausgewählte
|
Verwandte Themen | Linux-Shell, Kommentare |
|
||||
| Das Cygwin-Projekt portiert das mächtige Linux Konsolen-Programm bash (bourne again shell) und eine große Anzahl leistungsfähiger Linux Dienstprogramme auf Windows-Systeme. | Das gesamte Programm-Paket ist kostenlos und von ausgezeichneter Qualität. Seine Installation wird vor allem für EntwicklerInnen und für System-AdministratorInnen sehr empfohlen. | |||
Leider hat der führende IT-Hersteller die uralte DOS-Konsole praktisch
nicht weiterentwickelt. Sie ist heute eher als Relikt ('Eingabeaufforderung')
in jedem Windows-System enthalten, meist in diesem Pfad
|
sondern bringt lediglich die
→ Shell-Konsole und viele ihrer Dienstprogramme nach Windows.
→ Linux-Systeme werden heute genauso wie alle anderen PC mit Maus- und
Fenster-Technik gesteuert. |
|||
|
|
|
|||
|
Geschichte
Steve Chamberlain startete 1995 in der Firma Cygnus das Projekt Cygwin zur
Portierung von Linux Software auf Windows. 1999 wurde Cygnus von
Redhat (einem Linux Distributor)
aufgekauft. Mittlerweile hat sich das Projekt Cygwin kontinuierlich weiter entwickelt.Immer mehr Linux Bibliotheken und Programme können in der Cygwin-Umgebung auch auf Windows laufen. |
Funktionsweise
Die Grundlage des Projekts ist die Cygwin Bibliothek. Sie übersetzt
System-Aufrufe (system calls) von Linux Programmen in solche des Windows Systems.
Die Linux Programme arbeiten in ihrer gewohnten Umgebung.Das Projekt Wine arbeitet genau umgekehrt: Damit lassen sich Windows Programme auf Linux ausführen. |
|||
|
Grenzen ?
Heute kann man ganze Entwicklungs-Systeme (z.B. Perl) oder Server (Cron, Apache,...)
auf Cygwin laufen lassen. Allerdings stellt sich irgendwann die Frage, wozu man noch
Windows einsetzt.
|
Alternativen
Durch die enorme Leistung moderner Prozessoren laufen ganze
→ Virtuelle Systeme etwa gleich schnell wie Programme mit
Übersetzungs-Bibliotheken wie Cygwin. Man kann damit z.B. einen 'echten'
Linux PC einsetzen und die restlichen Win-Programme auf einem virtuellen
Windows PC laufen lassen.
|
|||
Cygwin-Installation |
|
QuellenCygwin kann von vielen Internet-Sites kostenlos geladen werden, z.B. Shareware- und Freeware-Archiven, von Universitäten, oder von der Cygwin-Homepage.► Das gesamte Paket besteht aus einem Installer und mehreren Paketen zahlreicher einzelner Dienstprogramme. ► Manche Sites bieten ein Grund-Paket (core) an, das sie mit Hilfe des Installers jederzeit Online erweitern können, besser ist allerdings ein möglichst komplettes Gesamt-Paket. ► Speicher-Bedarf: Download ca. 15MB Festplatte (ausgepackt, komplett) ca. 50MB Hauptspeicher ca. 2MB |
InstallationDer Cygwin-Installer ermöglicht wahlweise die Installation der bereits als Dateien vorhandenen Komponenten oder eine reine Online-Installation.► Empfehlenswert ist die Option, die Online geladenen Komponenten gleichzeitig zu speichern. So können sie Cygwin ohne weiteren Download auch auf anderen PC installieren, bzw. bei Bedarf rasch wieder regenerieren. ► Angebotene Optionen: Installieren sie Cygwin im Verzeichnis C:\Programme\Cygwin, für alle User und mit Unix-Zeilenumbruch (line endings)., und wählen sie alle Packages zur Installation. ► Nach Installation sollte man unbedigt die ↓ Windows-Umgebung für die Verwendung der Cygwin-Programme konfigurieren. Nur so kann man alle Vorteile nutzen und die professionellen Linux Dienstprogramme voll in das Windows-System integrieren. |
Cygwin UmgebungCygwin wird normalerweise in diesem Verzeichnis installiert:C:\Programme\Cygwin
►
Dieses Verzeichnis wird von allen Cygwin-Programmen als
Basis-Verzeichnis behandelt, d.h. so ähnlich wie
der 'Arbeitsplatz' für Windows-Programme. Alle darin enthaltenen
Pfade werden auf dieser Webseite, in der Dokumentation
und in den Shell Script-Programmen nach Linux-Art angegeben, d.h.
mit / Trennzeichen, beginnend mit einem
einfachen / welcher das Basis-Verzeichnis symbolisiert.Der Windows-Pfad C:\Programme\Cygwin\usr\doc\coreutils
wird beispielsweise für Linux (Cygwin)-Anwendungen so angegeben:
/usr/doc/coreutils
► Im Cygwin-Verzeichnis finden sie eine Text-Datei cygwin.bat die ein knappes Script-Programm (für den Standard → Windows Commandline Interpreter) enthält: Damit wird das Shell-Programm bash.exe in einem eigenen Konsolen-Fenster gestartet. ► Das Shell-Programm bash.exe und alle anderen Linux Dienstprogramme befinden sich im Verzeichnis /bin Dazu kommen optional beliebig viele Original Linux oder selbst erstellte Shell Script-Programme - Insgesamt ein komfortables und sehr leistungsfähiges Werkzeug-Paket. |
Linux Umgebung► Alle im Cygwin Verzeichnis enthaltenen Verzeichnisse (Ordner) und Dateien sind genauso benannt und angeordnet wie in jedem Original Linux System, ausgenommen die Datei-Erweiterung *.exe für die ausführbaren Dienstprogramme. Die Linux Programme finden daher ihre gewohnte Umgebung vor.► Ändern sie daher keinesfalls die Namen von Verzeichnissen oder Dateien innerhalb bzw. unterhalb des Cygwin-Verzeichnisses. ► Ändern sie auch die Struktur nicht, d.h. verschieben sie Verzeichnisse oder Dateien nicht an einen anderen Pfad. ► Sie können zwar jederzeit zusätzliche Verzeichnisse und Dateien im Cygwin-Verzeichnis anlegen, davon wird jedoch abgeraten: Bei einem Cygwin-Update werden diese evtl. gelöscht. Eigene Dateien werden besser in einem eigenen Verzeichnis außerhalb von Cygwin untergebracht. ► Eine Ausnahme sind Original Linux Komponenten: Falls sie Cygwin damit ergänzen, dann werden diese innerhalb des Cygwin-Verzeichnisses im gleichen Pfad installiert wie von Linux gewohnt. |
Cygwin Konfiguration |
|
|
►
Cygwin ist nach Installation bereits konfiguriert und kann ohne weitere
Maßnahmen sofort verwendet werden. Änderungen der Konfiguration
können problemlos zu jedem späteren Zeitpunkt ausgeführt werden. ► Beim ersten Start konfiguriert sich Cygwin (Copying skeleton files...) Warten sie unbedingt, bis das Konsolen-Zeichen $ erscheint - Das kann je nach PC einige Zeit dauern ! ► Weiter zur ↓ Anpassung der Windows-Umgebung ! |
Die Konfiguration der Shell-Konsole erfolgt in mehreren Schichten. ► Zuerst wird eine Standard-Konfiguration aus dem Verzeichnis /etc geladen. Die darin enthaltenen Dateien sollten sie nicht ändern, da sie bei einem Cygwin-Update überschrieben werden. ► Danach folgt die individuelle Konfiguration für die Windows-User: Das ist der beste Platz für eigene Änderungen. Für jeden Windows-User, der Cygwin verwendet, wird ein eigenes Verzeichnis angelegt: /home/username Das entspricht genau dem Linux Original, wo an dieser Stelle ein privates Verzeichnis für jeden Linux-User angelegt ist. ► Die Cygwin Konfiguration erfolgt durch Shell-Script-Programme: Die bereits vorher gestartete bash-Shell liest Befehle aus den dafür vorgesehenen Text-Dateien und führt sie aus. |
|
Die Shell-Konsole wird genauso konfiguriert wie die meisten anderen Linux-Programme:
Alle Konfigurations-Anweisungen sind in einfachen Text-Dateien enthalten.
Diese Dateien sind von Programmen leicht zu lesen, und für Menschen mit
jedem einfachen Text-Editor zu lesen oder zu ändern.Linux ist trotz oder gerade wegen der Verwendung so einfacher Mittel sehr sicher, da die Zugriffs-Rechte rigoros beachtet werden. Dieser Linux-Vorteil ist leider auf Cygwin nicht nutzbar, da dort die komplizierten und selten richtig eingestellten Windows-Zugriffsrechte gelten. Ein besonderer Aspekt moderner Systemverwaltung ist die Möglichkeit, Konfigurations-Dateien durch Programme (d.h. automatisch) zu erstellen oder zu ändern. Auf diese Weise kann ein übergeordnetes Programm (z.B. Betriebssystem, Update-Programm, ..) einfach, rasch und nachvollziehbar die Konfiguration zahlreicher anderer Programme steuern. |
|
User Konfigurations-DateiNormalerweise ist in jedem User-Verzeichnis diese Konfigurations-Datei enthalten/home/username/.bashrc
Diese Datei wird für jeden Windows-User bei der ersten Cygwin-Verwendung
angelegt, und zwar als Kopie von
/etc/defaults/etc/skel/.bashrc
► Falls das User Konfigurations-Programm .bashrc fehlen sollte, kontrollieren sie die Datei .bash_profile im gleichen Verzeichnis: Dort sollte diese Programmzeile eingetragen sein (ergänzen, falls sie fehlt): source "${HOME}/.bashrc"
Danach können sie eine leere Text-Datei bashrc.txt
erzeugen und diese mit Hilfe der Windows-Konsole umbenennen:
C:\> rename c:\programme\cygwin\home\username\bashrc.txt .bashrc
► Sie sollten das Original in /etc nur mit guten Linux-Kenntnisses ändern und dabei bedenken, dass Dateien in /etc bei einem Cygwin-Update überschrieben werden. Dokumentieren sie daher jede Änderung in /etc an anderer Stelle ! ► Falls sie die User Konfigurations-Datei in /home irrtümlich zerstört haben, genügt es, sie als Kopie des Originals neu anzulegen. |
Windows Text-EditorDie Konfigurations-Datei ist eine reine Text-Datei, der Zeilen-Umbruch erfolgt jedoch nach Linux-Art (Linefeed LF) und nicht nach Windows-Art (Carriage Return + Linefeed CR+LF). Änderungen mit einem Windows-Editor können daher Probleme bereiten.► Verwenden sie als Editor am besten Notepad++ oder write.exe ► Erstellen sie vor jeder Änderung, z.B. von .bashrc eine Sicherungs-Kopie. (Die Rück-Benennung ist nur in mit dem Konsolen-Programm rename möglich !) Individuelle ÄnderungenÄndern sie nichts am Original-Text der Datei/home/username/.bash_profile
►
Fügen sie eigene Zusätze am Ende dieser Datei
an und kommentieren sie diese eindeutig: Kommentar-Zeilen beginnen mit
einem # Zeichen.► Kommentare werden auch zum Ein/Aus-Schalten von Programmteilen verwendet: Jede Programmzeile mit einem führenden # Zeichen wird ignoriert. So enthält das Konfigurations-Programm meist abgeschaltete Teile, die sie durch Löschen des # Zeichens aktivieren können. ► Beispiel im Kapitel Eigene Alias-Befehle auf dieser Seite. |
Konfiguration der Windows-Umgebung |
|
Eigene ProgrammeSie sollten eigene Programme in einem eigenen Verzeichnis sammeln, z.B.C:\Programme\_myprox
Das Underline _ Zeichen vor dem Namen hat den Vorteil, dass dieses Verzeichnis in allen Listen an erster Stelle angezeigt wird. |
Auch wenn sie sonst keine eigenen Programme entwickeln, sollten sie dieses Verzeichnis anlegen. Hierher kommen u.a. alle Script-Programme, die zur Anpassung von Cygwin zusätzlich erstellt werden. Der Pfad zu diesem Verzeichnis wird in der Umgebungs-Variablen PATH (nächster Absatz) eingetragen. |
Umgebungs-VariableZur optimalen Anpassung sollten einige Windows Umgebungs-Variablen geändert werden.Achtung: Das stellt einen Eingriff in das Windows Betriebssystem dar. Bei unsachgemäßer Ausführung kann irreversibler Schaden an System,Programmen oder Daten entstehen. Sie folgen den Anweisungen auf eigenes Risiko ! Öffnen sie Lagen sie eine neue Systemvariable (unteres Fenster) mit dem Namen cyg an und tragen sie als Wert den Pfad zu den Linux Dienstprogrammen ein, z.B. (mit abschließendem \ ) c:\programme\cygwin\bin\
|
Markieren sie die Systemvariable (unteres Fenster) PATH und klicken sie Bearbeiten. Das winzige Fenster ist unpraktisch: Öffnen sie daher besser den Editor notepad.exe und kopieren sie den Inhalt (Wert) der Variablen PATH in das leere Editor-Fenster. Fügen sie am Ende (!) die beiden Pfade zu den Linux Dienstprogrammen und zu ihren eigenen Programmen an: ;%cyg%;c:\programme\_myprox
Vergessen sie nicht das ; Trennzeichen zwischen den Pfaden,
fügen sie jedoch keine Leerzeichen, Tabulatoren oder Zeilen-Umbrüche ein.Kopieren sie den ergänzten Text zurück in das Wert-Fenster der Variablen PATH und schließen sie die Systemsteuerung. |
System-RestartDamit die Änderung der Umgebungs-Variablen wirksam wird, melden sie sich vom System ab (Logout) und anschließend wieder an (Login). Alternativ können sie einen System-Neustart ausführen. |
KontrolleÖffnen sie eine Windows-Konsole (Eingabeaufforderung) cmd.exe und geben sie einC:\> set
Die Liste aller Umgebungs-Variablen wird angezeigt. Sie sollte die neue
Variable cyg enthalten, und am Ende von
PATH die beiden angefügten Pfade.
|
Shell Umgebungs-VariablenDie bash-Shell und manche der Dienstprogramme legen einige zusätzliche Umgebungs-Variable an. Diese Variablen sind nur in der Cygwin-Konsole definiert und werden z.B. so (alternativ) angezeigt
$ printenv | sort
$ declare $ set ♦ Details zur Änderung von Windows-Umgebungs-Variablen. |
Die von der Shell erzeugte Systemvariable HOME enthält den Pfad zum privaten /home/username-Verzeichnis in dem sich alle für Cygwin benötigten Komponenten befinden. Im Windows-System sollte keine (!) Systemvariable HOME angelegt sein, da Cygwin in diesem Fall keine eigene HOME-Variable erzeugt. Die Windows Systemvariablen HOMEDRIVE, HOMEPATH sind davon nicht betroffen und sollten keinesfalls geändert oder gelöscht werden. |
Arbeit mit Cygwin |
|
| Voraussetzungen: ↑ Cygwin installiert, ↑ Windows konfiguriert. | |
StartCygwin wird mit Start | Programme oder durch Klick auf ein Desktop-Icon gestartet. Beide Verknüpfungen führen zur Script-DateC:\Programme\Cygwin\cygwin.bat
►
Ein Fenster mit der Cygwin-Konsole sollte sich öffnen.Core-BefehleZuerst wird ein core-Befehl getestet. Diese Befehle sind in jeder funktionierenden Shell enthalten.Geben sie diesen Befehl (ohne das führende $ Zeichen) an der Cygwin Konsole ein: $ ls c:
Eine Verzeichnis-Liste ihrer Festplatte sollte angezeigt werden, ähnlich
diesen Befehlen der Windows-Konsole
C:\> dir /B
Auf der Cygwin-Konsole können alle Windows-Befehle verwendet werden.
Lediglich bei gleichnamigen Befehlen werden die Shell-Dienstprogramme bevorzugt.
Vor dem Befehl dir müssen sie jedoch zuerst in
ein beliebiges Verzeichnis wechseln, z.B.
C:\> dir /W
$ cd c:
Allerdings existiert in Cygwin meist ein eigenes
Programm /bin/dir.exe welches in diesem Fall
bevorzugt verwendet wird.
$ dir |
PfadeAlle (!) Pfade werden an der Cygwin-shell-Konsole mit einem / Trennzeichen angegeben. Vergleichen sie diese Befehle an den beiden Konsolen:
$ ls c:/temp
C:\> dir /B c:\temp DienstprogrammeAls nächstes wird ein beliebiges Linux Dienstprogramm getestet, z.B. /bin/ascii.exe
Geben sie diesen Befehl an der Cygwin-Konsole ein:
$ ascii
Eine Liste aller
→ ASCII-Zeichen wird angezeigt.► Wenn das Programm nicht startet (command not found . . ), dann ist vermutlich nur die Shell installiert, jedoch nicht die zahlreichen Linux-Dienstprogramme. Kontrollieren sie den Inhalt des /bin Verzeichnisses und ergänzen sie die ↑ Cygwin-Installation Das gleiche (!) Programm wird nun auf der Windows-Konsole gestartet: C:\> ascii
Bei korrekter Konfiguration wird jedes Linux Dienstprogramm auch auf der
Windows-Konsole ausgeführt.► Wenn das Programm nur auf der Cygwin-Konsole läuft, dann ist die ↑ Windows-Umgebung nicht richtig konfiguriert. |
Dokumentation und HilfeWenn sie kein Linux-Profi sind, dann benötigen sie eine Dokumentation zu den zahlreichen nun verfügbaren Befehlen und Programmen. Dazu dienen die Programme man (ältere Version) und info (verbesserte neue Version).Beide Programme bieten Live-Doku und Hilfe an der Konsole. Beispiel: fordern sie Hilfe zum Befehl man an:
$ man man
Die Programme man und info
laufen bei korrekter Konfiguration sowohl auf der Cygwin Konsole als auch auf
der Windows Konsole.C:\> man man C:\> help help Zum Vergleich wird der help Befehl der Windows-Konsole angeführt, dessen Information eher armselig ausfällt. |
NavigationDie Navigation in man und info erfolgt mit Hilfe der Pfeil-Tasten der Tastatur. Das man-Fenster wird mit der q-Taste verlassen.Tipp: Geben sie den Namen des betreffenden Programms an, zusätzlich eines oder mehrere der Stichworte Linux oder shell |
GCC Compiler |
|
|
Der GCC (GNU C Compiler) ist ein
besonders beliebtes Linux Werkzeug. Dieser Allzweck-Compiler ist zwar auf die
Programmiersprache C++ spezialisiert, jedoch auch für viele andere wie Ada,
Cobol,
D,
Fortran,
HP (div. Taschenrechner), Java,
MVS,
Pascal,
PL/I,
Python, ...
und die Microcodes einiger Prozessor-Chips geeignet. Mit Cygwin kann GCC auch auf Windows portiert werden. |
GCC funktioniert unter Cygwin einwandfrei. Die damit erzeugten Programme sind
jedoch leider nicht portabel: Sie laufen nur auf Windows + Cygwin, also weder auf Linux noch auf Windows ohne Cygwin. |
Microsoft Windows Services for UNIX (SFU) |
|
| Dieses Programm-Paket ergänzt - ähnlich wie Cygwin - ein Windows-System durch UNIX / Linux Konsolen-Programme. Cygwin bietet allerdings bedeutend mehr Möglichkeiten und wird außerdem von einer großen Zahl freiwilliger EntwicklerInnen laufend erweitert und verbessert. | Auch SFU enthält viele professionelle Linux Shell-Programme, jedoch leider nicht die wichtige bash-Shell. In einigen Vista-Versionen ist SFU unter dem Namen 'Subsystem for UNIX-based Applications' enthalten. |
|
|
|
|
|
http://www.cygwin.com: Information,
Dokumentation,
direkte Online-Installation,
UserGuide,
Packages, usw. |
SourceForge: >100 Projekte zum Stichwort CygwinNotepad++ als ausgezeichneter kostenfreier Editor für Shell-Scripts *.sh und Windows CMD-Scripts *.cmd Wikipedia:
CygWin,
Microsoft
SFU
|
|