Linux Konsole

Shell-Interpreter, Perl, PHP, ...

Linux-Shell Die Linux Konsole ist ein professionelles Werkzeug mit sehr weitreichenden Fähigkeiten und vielen Eigenschaften einer kompletten modernen Programmiersprache. Das macht Konsolen-Programme auf Linux ideal geeignet zur Systemverwaltung - automatisch und manuell. Konsolen-Programme können über SSH (Secure Shell) ferngesteuert werden.
Konsole Linux-Shell, Windows-CMD, Cygwin, ...
Auf dieser Webseite:
Konsole Historisch, nostalgisch, moderne Anwendung
Linux-Konsole Die Standard Linux Konsole
Script Script-Programme - Anweisungen in reinem Text
Shell Auswahl unter Shell-Programmen und Programmiersprachen
Shebang Pfad zum gewünschten Interpreter-Programm
Start & Stop Von (Script)-Programmen
Execute Ausführungs-Rechte
Links Ausgewählte Links zum Thema 'Linux-Shell'
Auf anderen Seiten dieses Webs:
core Ausgewählte Konsolen-Befehle in Linux und Windows
HowTo BASH-HowTo - Stark vereinfachte Übersicht
Allgemein Allgemeine Tipps zur Erstellung von Shell-Scripts, Kommentare
Beispiel (Fern)-Steuerung eines LAMP-Servers

Konsole

Die Konsole war historisch das erste User-Interface, eine einfache und robuste Schnittstelle zwischen AnwenderIn und Computer.
Eine Konsole ist ausschließlich zur Eingabe und Ausgabe von reinem Text eingerichtet.
Die ersten praktischen Konsolen waren Schreibmaschinen ähnlich. Die Befehle wurden manuell eingetippt, die Ausgabe automatisch geschrieben, beides auf Endlos-Papier.
Auch die ersten Bildschirm-Konsolen (grün auf Schwarz) konnten nur Texte anzeigen. Diese Variante wird gelegentlich noch in billigen Filmen als piepsendes Computer-Symbol verwendet.
Heute ist die Konsole als User-Interface durch Fenster mit Grafik und Maus-Bedienung abgelöst.
Für die Administration, für die Automatisierung und für die Zusammenarbeit von Programmen ist die Konsole noch heute das wichtigste Instrument. Dazu wurde sie allerdings in wesentlichen Punkten modernisiert: Konsolen Interpreter-Programme analysieren den eingegebenen Text und reagieren darauf, z.B. durch Ausführung von Befehlen, Starten von Programmen, usw.
Die Eingabe kann manuell erfolgen, die Anweisungen können jedoch auch in Text-Dateien gespeichert werden - Script-Programme.

Linux-Konsole

Spezialisierte Linux-Server verzichten auf einen grafisches Desktop und verwenden die gesamte Leistung für die Server-Programme. In diesem Fall zeigt der Server-Bildschirm ausschließlich die Shell-Konsole.

Mit Befehl
# konsole
wird auf Linux-PC mit Desktop (Gnome, KDE) eine neue Instanz der Linux-Konsole gestartet.
Hilfe zu diesem Befehl erhält man mit
# man konsole
Der Befehl ist sinnvoll, wenn er (mit Optionen) in ein Script eingebaut wird.

Option -e (execute)

Diese Option ordnet die Ausführung des nachfolgend angegebenen Befehls an.
Beispiel:
# konsole -e ifconfig >> /home/test/ifconfig.log
Diese Anweisung führt das Programm ifconfig aus (Ausgabe der Netzwerk-Konfiguration) und speichert das Ergebnis in der angegebenen Datei. Ohne weitere Angabe wird das Konsolen-Fenster nach dem Ende des Befehls wieder geschlossen. Man kann die Ausgabe nicht ansehen, daher ist diese Variante nur für Befehle geeignet, deren Ausgabe uninteressant ist oder in einer (Log)-Datei gespeichert wird.

Option -noclose

Diese Option öffnet ein Konsolen-Fenster, das bis zum manuellen Schließen offen bleibt. Sie wird fast immer zusammen mit Option -e und mit einem Konsolen-Befehl als Anweisung verwendet. Diese Variante ist sinnvoll, wenn man die Ausgabe eines Befehls selbst kontrollieren will.
Beispiel:
# konsole -noclose -e /etc/init.d/smbd status
zeigt den aktuellen Status des Samba-Servers in einem Konsolen-Fenster an. Das ist äquivalent zum Befehl (in einem bereits geöffneten Konsolen-Fenster):
# /etc/init.d/smbd status
Diese Variante des konsole-Befehls eignet sich besonders für Scripts zur interaktiven System-Verwaltung.

Bookmark

Beispiel für die Anwendung der Konsolen-Optionen:
Erstellen sie eine Text-Datei /home/test/ifconfig.sh (oder in einem anderen home-Verzeichnis).
Tragen sie folgenden Text ein:
#!/bin/sh
konsole -noclose -e ifconfig

Erteilen sie Ausführungs-Rechte für sich selbst oder (für Test-Zwecke) für alle User, z.B. mit
# chmod 777 /home/test/ifconfig.sh
Eine Variante dazu ist Rechtklick auf das Datei-Icon, Menü Properties (Eigenschaften) | Permissions (Rechte) | Advanced. Markieren sie alle 3 Häkchen der Spalte x (execute = ausführen)

Testen sie das Script-Programm: Öffnen sie eine Shell-Konsole und geben sie ein
# /home/test/ifconfig.sh
Das Programm sollte ein neues Konsolen-Fenster öffnen, darin die Anweisung ifconfig ausführen (Ausgabe der Netzwerk-Konfiguration) und das Fenster zur Ansicht geöffnet lassen.
Wenn der Test funktioniert, dann können sie dieses Script aus beliebigen anderen Anwendungen aufrufen, z.B.

Wenn in der Taskleiste (auf jedem Bildschirm ganz unten) keine Favoriten (Bookmarks) angezeigt werden, dann rechts-klicken sie in die Taskleiste und geben die Anweisung Add Applet (Applet hinzufügen) | Favoriten (Bookmarks).

Wenn die Favoriten (Bookmarks, gelber Stern) angezeigt werden, dann rechts-klicken sie das Icon und geben den Befehl Edit Bookmarks.
Rechts-klicken sie auf ein Verzeichnis-Icon, z.B. auf Bookmarks und geben sie BefehlNew Bookmark.
Rechts-klicken sie das neu angelegte Icon und befehlen sie Rename. Tragen sie einen sinnvollen Namen ein, z.B. ifconfig
Befehlen sie Change URL. Tragen sie in das URL-Feld den Pfad zu ihrem Script ein:
/home/test/ifconfig.sh
Schließen sie den Bookmark Editor.

Bei Klick auf das Favoriten (Bookmarks)-Icon wird der neue Bookmark-Befehl ifconfig angezeigt.
Mit dieser Anweisung wird ein Konsolen-Fenster geöffnet und die Netzwerk-Konfiguration angezeigt.

Tipp: Legen sie ähnliche Bookmarks und / oder Scripts für die Anzeige des Status und für den Restart aller wichtigen Server-Dienste an, z.B. für den Apache Webserver, den MySQL Datenbank Server und für den Samba Fileserver:
# /etc/init.d/apache2 status
# /etc/init.d/apache2 restart
# /etc/init.d/mysql status
# /etc/init.d/smbd status

SSH

bietet die Möglichkeit zur Fernsteuerung eines beliebigen PC, auf dem ein SSH-Server installiert ist. Das ist auf Linux-Server-PC immer der Fall und lässt sich auf allen anderen Linux-PC leicht nachholen.

In diesem Fall können sie den betreffenden Linux-PC von jedem anderen PC (im lokalen Netzwerk) über eine 'ferngesteuerte Konsole' bedienen.

Jeder PC mit SSH-Server kann optional auch über das Internet gesteuert werden. Das öffnet jedoch eine gefährliche Sicherheits-Lücke und sollte erfahrenen Linux-AdministratorInnen vorbehalten bleiben.
Beispiel: Fernsteuerung eines Linux-PC mit dem kostenfreien Windows-Programm PuTTY:
Starten sie das Programm PuTTY
Geben sie die IP-Adresse des entfernten Linux-PC ein und bestätigen sie mit 'Open'. Sie erhalten ein Konsolen-Fenster und darin die obligate Anmeldung.
Geben sie den Linux User-Namen und danach das Passwort ein (wird nicht angezeigt).
Nach korrekter Anmeldung arbeitet die SSH-Konsole genauso wie die Shell-Konsole direkt am Linux-PC.
Beenden sie die SSH-Session mit exit
Meist ist es nicht erlaubt, sich als Administrator root anzumelden: Melden sie sich als normaler User an und wechseln sie danach mit Anweisung su ihre Identität.

Script-Programme

Text-Datei

Ein Script-Programm besteht aus Anweisungs-Texten in einer Text-Datei. Derartige Dateien enthalten ausschließlich lesbaren Text (text/plain).
Im Gegensatz dazu bestehen direkt ausführbare Programme (Textverarbeitung, Kalkulation, Grafik, Spiele, ...) aus binären Anweisungen in der Maschinen-Sprache des jeweiligen PC.
Derartige Programme sind für Menschen nicht lesbar.

ASCII

Als Zeichensatz werden ausschließlich die 128 → ASCII-Zeichen verwendet. Nationale Sonderzeichen sind ausgeschlossen. Für Texte, Fehler-Meldungen und Kommentare wird normalerweise Englisch verwendet.
Daher sind Script-Programme auf jeden PC und auf jedes Betriebssystem portabel. Damit sie dort auch laufen, müssen jedoch einige Anforderungen erfüllt werden.

Einzig für die Text-Ausgabe sind nationale Sonderzeichen (z.B. Umlaute) möglich, jedoch nicht empfehlenswert. Verwenden sie im Zweifel nur ASCII-Zeichen und englische Sprache, damit ihr Script international kompatibel ist.
Wenn Text-Ausgabe in anderen Sprachen notwendig ist, dann werden diese Texte in professionellen Programmen in eigene nationalisierte Dateien ausgelagert (z.B. in je eine eigene Datei für de, en, fr, it usw.)

Vorteile von Script-Programmen

Ein Text kann von Menschen rasch und leicht gelesen oder verändert werden.

Dafür kann eine Vielzahl verschiedener Programme (Text-Editoren) eingesetzt werden. Die Anforderungen an einen Text-Editor sind besonders gering. Sie sind sogar auf Windows in vielen verschiedenen Programmen verfügbar und benötigen wenige Resourcen.
Linux bietet viele Editor-Programme, z.B. Emacs (xemacs), joe, kate, kedit, kwrite, nano, nedit, pico, vi (vim), ...
Tipp: Für Windows besonders empfehlenswert ist Notepad++ (NPP), das sich in der portablen Version auch auf USB-Stick installieren lässt.

Darüber hinaus kann man Texte mit vielen anderen Programmen verarbeiten (lesen, speichern, verändern, erzeugen, ...), selbstverständlich auch mit jeder Programmiersprache.

Texte lassen sich als Dateien oder in Datenbanken speichern, sie sind in Netzwerken lokal und global leicht transportabel.

Texte sind nicht an bestimmte Hardware, Hersteller, Betriebssysteme oder Sprachen gebunden, bei strikter Verwendung von ASCII-Zeichen und englischer Sprache auch nicht an Kulturen, Sprachen oder Nationen.

Die Zeit für Entwicklung oder Anpassung von Script-Programmen ist wesentlich kürzer als für compilierte Programme.
Das macht Script-Programme billiger und rascher einsetzbar.

Wer sich auf Linux noch nicht leicht zurechtfindet, kann Linux Shell-Programme auch auf einem Windows-PC lesen oder bearbeiten: Das betreffende Verzeichnis wird vom → Samba-Server des Linux-PC freigegeben und am Windows-PC als 'Netzlaufwerk' verwendet.

Wegen der zahlreichen Vorteile erobern Script-Programme heute immer mehr Anwendungs-Bereiche.

Nachteile

Die Anweisungen von Script-Programmen müssen von einem Interpreter-Programm gelesen und in ausführbare Befehle (in der Maschinen-Sprache des jeweiligen PC) umgesetzt werden.

Das Interpreter-Programm ist selbst eine binäre Datei in der Maschinensprache des jeweiligen PC und Betriebssystems.
Das Interpreter-Programm ist daher (im Gegensatz zu den Scripts) nicht portabel, man braucht z.B. für jedes Betriebssystem ein eigenes Perl Interpreter Programm.

Die Interpretation eines Script-Programms kostet Zeit
Alle Anweisungen sind als Text enthalten und müssen in Maschinensprache übersetzt werden.
Dieser Vorgang ist bei jeder einzelnen Ausführung eines Script-Programms notwendig.

Dieser Nachteil verliert jedoch wegen der rasch zunehmenden Leistung moderner PC ständig an Bedeutung. Script-Programme auf modernen PC arbeiten weit schneller als compilierte (fertig in Maschinensprache übersetzte) Programme noch vor wenigen Jahren.

Umbruch

Leider verwenden die gängigen Betriebssysteme unterschiedliche Zeichen für den Zeilen-Umbruch (neue Zeile):
SystemSymbol ASCII
Apple\r0D
Linux\n0A
Windows\r\n0D 0A
Viele Programme sind robust und funktionieren mit jedem Umbruch-Zeichen. Daraus sollten sie sich jedoch besser nicht verlassen.

Andere (z.B. Perl Script-Programme) bestehen auf dem passenden Umbruch und müssen daher bei System-Wechsel übersetzt werden (z.B. mit Notepad++).

Datei-Namen

Verwenden sie sprechende Namen - Aus dem Namen soll auch nach Monaten noch erkennbar sein, wozu ein Script dient.

Datei-Namen sollten mit einem kleinen Buchstaben a..z beginnen.
Ein führender . Punkt macht die Datei für normale Anzeige unsichtbar.

Verwenden sie für Datei-Namen nur die Zeichen 0..9a..z und als Trennzeichen das _ underline.
Verstöße gegen diese Regel kommen bei AnfängerInnen häufig vor. Die daraus resultierenden Fehler sind oft mühsam aufzuspüren.

Großbuchstaben A..Z können zwar verwendet werden, führen jedoch leicht zu Fehlern, da Linux kleine und große Buchstaben streng unterscheidet (im Gegensatz zu Windows).

Verwenden sie keine Leerzeichen, Interpunktionen, Sonderzeichen, Umlaute - Das kann im Einzelfall funktionieren, führt jedoch später immer wieder zu schwer auffindbaren Fehlern.

Verwenden sie Datei-Endungen im Windows-Stil, wenn sie universell portable Scripts erstellen, z.B. myscript.pl für ein Perl-Script.

Lassen sie auf Windows-PC unbedingt alle Datei-Endungen anzeigen (Extras | Ordner-Optionen | Ansicht | Erweiterungen bei bekannten Dateitypen nicht ausblenden)

Verwenden sie nicht die Namen bereits vorhandener Befehle. Testen sie einen Namen zumindest so
# man myscript
# info myscript
# whatis myscript
Nur dann, wenn sie keine Ergebnisse erhalten, ist der Name für eigene Scripts geeignet.

Insbesondere der oft strapazierte Name test kann nicht verwendet werden, da es einen gleichnamigen System-Befehl bereits gibt.

Ausführungs-Rechte

Auf Linux sind die Zugriffs-Rechte (im Gegensatz zu Windows) einfach und streng geregelt. Zur Einstellung dient u.a. das Konsolen-Programm chmod - Hilfe mit
# man chmod

Vergessen sie nicht, die Zugriffs-Rechte (Ausführung, execute) eigener Script-Dateien einzustellen. Ansonsten wird die Ausführung unterbunden.

Shell-Programme

Linux bietet mehrere Konsolen-Programme (Shells) zur Auswahl. Das ist für Windows-AnwenderInnen ebenso ungewohnt wie die Tatsache, dass es mehrere Desktop-Programme zur Auswahl gibt. Die Wahl-Möglichkeit bringt natürlich auch die Nachteile einer Demokratie gegenüber einer Diktatur: Man muss sich mit mehreren (Shell)-Varianten auseinandersetzen, und bei eigenen Entwicklungen für eine der Varianten entscheiden.

Bourne-Shell

Diese Shell (sh) wurde 1978 als erste UNIX Konsole von Stephen R. Bourne entwickelt. Das Programm.war spartanisch ausgestattet, prägte jedoch die historische Entwicklung.

Die Syntax der sh dominiert heute alle UNIX Konsolen-Programme. Allerdings werden nur mehr die Nachfolge-Versionen verwendet, z.B. die bash (weiter unten in diesem Kapitel)

C-Shell

Diese Shell (csh) wurde von Billy Joy entwickelt. Die Syntax ist stark an die Programmiersprache C angelehnt. Da fast alle UNIX-Programme in C erstellt sind, war die csh für EntwicklerInnen einfach anzuwenden.
Die csh brachte viele praktische Vorteile, dieser Vorsprung ist jedoch heute durch Nachfolger der sh aufgeholt.

Die von der traditionellen sh abweichende Syntax erwies sich jedoch als unangenehme Doppelgleisigkeit.
Die Ternex C-Shell (Turbo C-Shell) tcsh ist eine Weiterentwicklung der csh
Heute haben csh und tcsh nur mehr geringe Bedeutung.

Korn Shell

David Korn entwickelte 1986 die Korn Shell (ksh) mit dem Ziel, die traditionelle Syntax der sh mit der bequemen Bedienung der csh zu verbinden.
Die ksh war anfangs ein kommerzielles Programm und wurde deshalb in der mit OpenSource verwöhnten UNIX-Welt kaum akzeptiert.

Heute wird die ksh für die meisten größeren Skript-Projekte eingesetzt.
Die Unterschiede zur bash sind gering. Daher ist es in der Praxis kein Problem, sowohl mit bash als auch mit ksh zu arbeiten.

Bourne-Again Shell

Diese Shell bash ist eine Weiterentwicklung der sh durch das GNU Projekt. Die bash hat heute die größte Bedeutung. Sie verbindet die ursprüngliche Syntax der sh mit vielen praktischen Annehmlichkeiten.

Auf allen gängigen Linux-Systemen ist die bash als Standard-Shell eingerichtet. Sie bietet insbesondere bei direkter manueller Bedienung die größten Vorteile.

Dialekte

Leider sind die UNIX bzw. Linux System-Befehle nicht ganz einheitlich. Je nach Hersteller bzw. Distributor gibt es teilweise Varianten der Befehls-Namen und Optionen.

Deshalb müssen Shell Skript-Programme bei Übertragung auf andere Betriebssysteme sorgfältig getestet und allenfalls etwas modifiziert werden.

Perl Perl

Scripts in der Programmiersprache Perl werden auf Linux häufig eingesetzt. Perl ist schon deshalb in jeder gängigen Linux-Distribution installiert.
Perl Scripts haben den großen Vorteil der Portablilität (Nur der Zeilen-Umbruch muss übersetzt werden). Sauber programmierte Perl-Scripts können auf jedem UNIX- Linux- oder Windows-System eingesetzt werden.

Wenn ein Script auf spezifische Details des jeweiligen Betriebssystems eingeht, dann müssen diese Teile bei Portierung auf andere Systeme angepasst werden.
Perl ist auch auf Windows sehr vorteilhaft (kostenfrei) einsetzbar, muss dort allerdings installiert werden.
Details zur Programmiersprache Perl, zur Installation von Perl auf Windows.

PHP PHP

kann ebenso wie Perl als Konsolen-Programm (CommandLine Interface, CLI) eingesetzt werden und ist ebenso wie Perl gut auf Windows-Systeme portabel.
Manche Linux-Varianten unterscheiden zwischen PHP als Server-Hilfsprogramm (CGI), als Server-Modul (mod-php) oder als Konsolen-Interpreter (CLI). Kontrollieren sie die Installation und installieren sie evtl. ein fehlendes PHP-CLI-Paket.

In der Linux-Praxis werden PHP Script-Programme kaum zur Verwaltung verwendet (Perl wird bevorzugt).
Für eigene Entwicklungen kann PHP jedoch sehr vorteilhaft eingesetzt werden: PHP-Kenntnisse sind häufig bereits vorhanden, PHP ist besonders einfach anzuwenden, und PHP-Scripts harmonieren problemlos mit Shell- und Perl-Scripts.
Details zur Verwendung von PHP als CLI

Cygwin Cygwin

Das Projekt Cygwin ist eine kostenfreie Portierung von Teilen der UNIX Shell auf Windows. Der große Vorteil liegt in der Möglichkeit, mächtige Shell-Programme auch auf Windows einzusetzen.

Cygwin bietet die meisten Linux System-Befehle und die Möglichkeit, Shell Script-Programme auf Windows zu portieren.
Details zu Cygwin

Zusammenarbeit

In der Praxis aller gängigen Linux-Systeme werden Script-Programme mehrerer Shells sowie der Programmiersprachen Perl und Python in Kombination eingesetzt.
Jede Aufgabe kann mit unterschiedlichen Resourcen gelöst werden, die harmonisch miteinander arbeiten.

Für eigene Entwicklungen besonders angenehm ist die Möglichkeit, zwischen mehreren Shell-Varianten und Programmiersprachen zu wählen.
Meist ist es sinnvoll, jene Variante zu verwenden, für welche die meisten Resourcen (Kenntnisse, Erfahrung, Dokumentation, ...) vorhanden sind.

Shebang #!

Shebang #!

Die Text-Dateien von Script-Programmen müssen zur Ausführung an das jeweilige Interpreter-Programm übergeben werden.
Linux verwendet dazu ein genial einfaches System:
Der Pfad zum ausführbaren Interpreter-Programm wird in der ersten Text-Zeile angegeben.

Windows-AnwenderInnen sind gewohnt, dass die Verknüpfung mit dem Programm von der Endung des Datei-Namens abhängt. In allen anderen Betriebssystemen ist der Datei-Name jedoch mehr oder weniger frei wählbar.
Auch auf Linux kann man Datei-Namen im Windows-Stil (z.B. test.sh) verwenden. Der Name hat jedoch normalerweise keine spezielle Funktion, d.h. man kann die gleiche Script-Datei auch einfach test benennen.

Die strikten Shebang-Regeln:
Der Interpreter-Pfad muss in der ersten Zeile angegeben werden. Davor sind keine Leerzeilen, Kommentare usw. zulässig.
Die Zeile muss mit den Zeichen #! beginnen.
Danach folgt der Pfad zum ausführbaren Programm.
Die Zeile wird mit LineFeed (LF, → ASCII-Zeichen #0A = 10.) abgeschlossen (nicht mit CR/LF wie auf Windows !).
Beispiel:
Standard Shell-(Script)-Programm auf Linux, z.B. als Text-Datei /home/test/test.sh
#!/bin/sh
echo "Hier ist die Shell !"
Beispiel:
Perl-(Script)-Programm, z.B. als Text-Datei /home/test/test.pl
#!/usr/bin/perl
print "Hier ist Perl !\n";
Beispiel:
PHP-(Script)-Programm, z.B. als Text-Datei /home/test/test.php
Beachten sie den Tipp zur Umleitung von PHP am Ende dieses Kapitels !
#!/usr/bin/php5
<?php
print "Hier ist PHP !\n";
?>

Umleitung

Aus praktischen Gründen sind gängige Linux-Systeme mit Soft-Links so konfiguriert, dass häufig verwendete Scripts automatisch zum passenden Interpreter-Programm umgeleitet werden.
Standard-Scripts werden daher ohne Änderung des Interpreter-Pfades ausgeführt.

So führen Anforderungen der Shell sh auf Linux meist automatisch zur bash, auch dann wenn sich der Interpreter in einem anderen Pfad befindet.
Tipp: Die meisten Linux-Distributionen enthalten keine Umleitung für PHP. Kontrollieren sie, ob bereits eine Datei dieses Namens vorhanden ist:
/usr/bin/php
So legen sie selbst das Alias an:
# ln -s /usr/bin/php5 /usr/bin/php
Danach funktionieren ihre Script-Programme mit diesem Versions-unabhängigen Shebang
#!/usr/bin/php
Vorteil: Kein PHP Script muss bei Änderung der PHP-Version geändert werden.

Nachteil: Bei Neu-Installation des Betriebssystems müssen sie das Alias neu anlegen. Bei Wechel der PHP-Version muss das Alias angepasst werden, z.B. auf php6

Start & Stop von Script-Programmen

Die Ausführung von Script-Programmen erfolgt durch Angabe ihres Pfades an der Konsole.
Beispiel: Die Ausführung eines Scripts in ihrem privaten Verzeichnis-Pfad
/home/ich/myscript
wird auf der Konsole so ausgelöst:
# /home/ich/myscript
Wenn sie als User ich angemeldet sind, dann ist das aktuelle Arbeits-Verzeichnis ihr privates home-Verzeichnis. In diesem Fall genügt die Angabe des relativen Pfades:
# myscript

Der Befehl zum Start eines Script-Programms kann auch in einem anderen Script-Programm enthalten sein. In diesem Fall wird das betreffende Programm automatisch gestartet.

root

Für den Linux-Administrator root gelten in den meisten Distributionen zur Sicherheit besondere Regeln.
Das aktuelle Verzeichnis lässt sich wie üblich mit Anweisung cd (ChangeDirectory) ändern.

Die Ausführung von Programmen als root erfordert jedoch stets die Angabe des vollen (absoluten) Pfads - auch dann, wenn man sich gerade im gleichen Verzeichnis wie das Programm befindet.
Wenn ein Script keine Shebang-Anweisung enthält, dann kann man alternativ das ausführenden Programm (hier sh) starten und den Pfad zum Script als Argument übergeben. Start eines Scripts ohne Shebang-Zeile:
# sh /home/ich/myscript

Beenden

Unerwünscht laufende Linux Konsolen-Programme (z.B. endlose Schleifen) können auf unterschiedliche Art beendet werden.

"Harte" Methoden:
Schließen des entsprechenden Konsolen-Fensters.
Abmeldung (logout) - Für alle User außer root
Herunterfahren des Systems durch den Administrator root (nur im Notfall)
Sanfte Methode:
Öffnen sie eine neue Konsole. Befehl ps zeigt alle laufenden Prozesse (lange Liste). Mit grep filtert man daraus alle auf das angegebene Stichwort (hier myprog) passenden Prozesse:
# ps -e | grep myprog
In der ersten Spalte wird die ID-Nummer des Prozesses (PID) angegeben.

Mit kill beenden sie den Prozess (ersetzen sie 1234 durch die zutreffende PID):
# kill -TERM 1234

(Nur) als Administrator root haben sie das Recht, die Prozesse aller User zu beenden.

Ausführungs-(Execute)-Rechte

Ausführungs-Rechte

Auf Linux sind die Zugriffs-Rechte einfach und streng geregelt. Zur Einstellung dient u.a. das Konsolen-Programm chmod - Hilfe mit
# man chmod


Ein Linux-Programm wird nur dann ausgeführt, wenn der ausführende User das 'Execute'-Recht dazu hat. Das gilt insebsondere auch für eigene Script-Programme (z.B. für Shell, Perl, PHP, ...).

Um ein Programm test.sh im privaten Verzeichnis /home/ich zur Verwendung für alle User freizugeben, kann man z.B. angeben:
# ls -l test*
# chmod 777 /home/ich/test.sh
# ls -l test*
# /home/ich/test.sh
Die beiden ls-Befehle zeigen in der ersten Spalte die jeweiligen Rechte an. Das x steht für Ausführung (execute), und zwar für Eigentümer (owner), Gruppe und 'Alle'.
Mit der letzten Zeile wird das Programm ausgeführt.

root

Der Linux-Administrator root verfügt über alle Rechte. Das gilt (im Gegensatz zu Windows) ohne Einschränkung. Als User root kann man großen Schaden anrichten, daher wird dieser User besonders geschützt. Man sollte sich nur dann als root anmelden, wenn man diese Rechte tatsächlich benötigt.

Pfade
In den meisten Distributionen darf der User root nur absolute Pfade verwenden (die mit / beginnen). Umgekehrt ist vielen anderen Usern die Verwendung geschützter Pfade (beginnen mit / oder ../) verboten. Die entsprechende Einstellung kann man als Administrator natürlich ändern.

Geschützte Pfade, Dateien, Programme
Viele Pfade (z.B. /root), Dateien (z.B. /etc/*) und Programme (z.B. useraddd) sind aus gutem Grund dem Administrator root vorbehalten.

su und sudo
Linux bietet die Möglichkeit, seine Identität kurzfristig oder dauerhaft zu wechseln. Details dazu im Manual:
# man su
# man sudo
Wenn man als 'normaler User' angemeldet ist, dann kann man einzelne geschützte Programme als root ausführen, z.B.
# sudo /sbin/ifconfig
root password: *****
Man muss das root-Passwort eingeben, danach wird die Anweisung bzw. das Programm ausgeführt. Die Privilegien gelten jedoch nur für diese eine Anweisung, danach hat man wieder die üblichen User-Rechte.

Ausgewählte Links zum Thema 'Linux-Shell'

GNU

(GNU's not Linux):   Bash (Bourne-Again Shell, Manual (Online oder Download )
Wikipedia Wikipedia: Unix-Shell, Unix-Kommandos,
Bash, Bourne-Shell, C-Shell, (tcsh), Korn-Shell,
Linux Shell Reference:
Verwenden sie zuerst immer die integrierte Hilfe ihrer Linux-Konsole (Befehle man,info,whatis, die integrierte Hilfe ihrer Distribution (z.B. SuSE Hilfe) oder die online-Hilfe des Distributors.
ComputerHope (en), LinuxSelfHelp (en), O'Reilly (en), SGI (en), SS64 (en),
HTW Dresden (de),
SS64: Bash CommandLine Index
Linux Shell Tutorials:
EgoCrew (de), Netzmafia (de), LinuxCommand (en), Steve Parker (en), TLDP (en),
Script Beispiele
(kombinieren sie bei der Suche ihr Stichwort mit shell und/oder script)