Bei Eingabe Programmstart

Warum können einige Programme über die Eingabe des Namens auf einer Kommandozeile starten und andere nicht? Verschiedene Programme wie z. B. fdisk kann ich nicht einfach auf der Kommandozeile aufrufen, obwohl sich das Programm unter /sbin/fdisk befindet. Ist mein System falsch konfiguriert?

Dr. Linux: Vorausgesetzt, Sie möchten keine Programmdateien aufrufen, deren Ausführung root oder einem bestimmten User und dessen Gruppe vorbehalten sind (wie z. B. fetchnews), lassen sich alle Programme starten, indem Sie den absoluten Pfadnamen als Befehl absetzen. In Ihrem Beispiel geben Sie also Folgendes ein:

user$ /sbin/fdisk

Ihre Shell sucht dann mit Hilfe der Shell-Variablen PATH nach dem Programm.

Die bash arbeitet nach dem Login eines Anwenders folgende Dateien im jeweiligen Homeverzeichnis ab:

  • .bash_profile
  • .bash_login
  • .profile
  • ggf. .bashrc Ist eine der Dateien nicht vorhanden, wird die nächste auf mögliche Einträge untersucht. Wollen Sie den Wert einer Variablen dauerhaft setzen oder ändern, schreiben Sie sie in eine dieser Dateien. Welche Variablen im System gesetzt sind, bringt Ihnen der Befehl set auf den Ausgabebildschirm.

Ist das Verzeichnis /sbin nicht in der PATH-Variablen eingetragen, wird in diesem Verzeichnis nicht gesucht, ergo müssen solche Programme mit dem absoluten oder relativen Pfadnamen gestartet werden. Soll ein Programm im aktuellen Verzeichnis aufgerufen werden, das sich nicht im Suchpfad befindet, wird dies durch Voranstellen von ./ vor den Programmnamen erreicht.

Diese auf den ersten Blick etwas umständlich anmutende Vorgehensweise hat durchaus ihren Sinn. Dahinter steckt der Grundgedanke, den Anwendern mehr Sicherheit vor Zugriff und/oder Schädigung durch "die dunkle Seite der Macht" zu geben.

Ein etwas tieferer Blick auf die Arbeitsweise der Variablen PATH erklärt diesen Sicherheitsmechanismus. Die Variable enthält eine Reihe von Verzeichnispfaden, die durch Doppelpunkte von einander getrennt sind. Diese Reihe wird von vorn bis zu dem Verzeichnispfad durchgearbeitet, in dem das gesuchte Kommando bzw. Programm gefunden wird, der Rest wird ignoriert.

Ein (eingeschleustes) Programm, das nur den Namen eines oft benutzten Kommandos führt, aber im Hintergrund etwas völlig Anderes auslöst, wird statt des echten Programms ausgeführt, wenn es von der Shell vor dem wirklichen Befehl gefunden wird. Daher ist es sicherer, dass nur die vorgesehenen Verzeichnispfade durchsucht werden. Wären das jeweils aktuelle Arbeitsverzeichnis oder auch das von vielen gemeinsam genutzte temporäre Verzeichnis ganz vorn in PATH aufgelistet, bräuchten Schadprogramme aus der täglichen Mailflut auf Einzelplatzrechnern oder (Angreifer-) Programme im Verzeichnis /tmp (vor allem in Netzwerken) nur auf einen Aufruf zu warten.

Ein sorgfältiger Administrator ruft daher Programme mit dem absoluten Pfadnamen auf, um nicht unbewusst einem (eingeschleusten) Programm auch noch die Rechte des Superusers mit auf den Weg zu geben.

Mit dem Befehl

user$ echo $PATH

können Sie sich anschauen, welche Verzeichnisse zu Ihrem Programmsuchpfad gehören:

usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/lib/java/:.

Für die kurzfristige Aufnahme eines Verzeichnisses in die PATH-Variable setzen Sie folgenden Befehl auf der Kommandozeile ab:

user$ export PATH=$PATH:/Verzeichnis/Unterverzeichnis

Das vorangestellte $PATH bewirkt, dass der bereits vorhandene Inhalt der Pfadvariablen erhalten bleibt. Selbstverständlich wirkt sich diese Pfadänderung nicht auf Terminalfenster aus, die Sie sonst noch geöffnet haben.

Möchten Sie trotz der Sicherheitsbedenken permanent ein weiteres Verzeichnis in die Variable aufnehmen, dann erreichen Sie dies durch einen entsprechenden Eintrag in der ~/.bashrc oder ~/.profile.

Klare Sicht, klare Anweisung

Es passiert gelegentlich, dass ich im Textmodus oder in einem XTerm eine Programmdatei mit dem Befehl cat öffne. In Folge wird die Bildschirmausgabe mit unlesbaren Zeichen übersät, und alle anschließend neu eingegebenen Zeichen werden ebenfalls unleserlich dargestellt. Wie bekomme ich in solchen Fällen eine lesbare Bildschirmausgabe zurück?

Dr. Linux: Eine im Eifer des Gefechts aufgelistete Programmdatei hat fast immer zur Folge, dass sich die Zeichenausgabe in ein unleserliches Etwas verwandelt, denn die Ausgabe von Programmdateien enthält gewöhnlich Steuerzeichen, die wiederum die Grafikkarte dazu veranlassen, in einen alternativen Modus zu schalten.

Im günstigsten Fall brechen Sie das Programm mit der Tastenkombination [Strg+C] ab und bekommen einen lesbaren Prompt zurück.

Bleibt die Eingabeaufforderung weiterhin unlesbar, versuchen Sie es mit der Tastenkombination [Strg+V] und danach [Strg+O] (Abbildung 3). Mit [Strg+V] sagen Sie Ihrer Shell, dass Sie nun ein Steuerzeichen absetzen, die Shell wird Ihnen dies mit keinerlei Rückmeldung danken. [Strg+O] ist das Steuerzeichen und erscheint normalerweise schon in lesbarer Form als ^O auf der Kommandozeile. Erst danach drücken Sie [Return] ([Enter]), was Ihnen die lesbare Auskunft command not found und hoffentlich einen wiederhergestellten Prompt einbringt.

Abbildung 3: Zurücksetzen der Grafikkarte vom alternativen Modus

Wenn Sie einen Sinn für das 100%ige haben, schicken Sie nun noch den Befehl

user$ reset

hinterher, der all die lästigen Störzeichen aus der Bildschirmausgabe entfernt.

Wenn alles schiefgeht, was schiefgehen kann, dann fallen Ihnen gerade im Ernstfall die Tastenkombinationen nicht ein, um den alternativen Modus der Grafikkarte zurückzusetzen. Ein "blind" eingetipptes reset, gefolgt von return (eventuell zweimal hintereinander) reicht ggf. schon aus, um Ihre Bildschirmausgabe wieder in eine lesbare Form zu versetzen.

Glossar

Konsole

Einer der Textbildschirme, zwischen denen man unter Linux mit der Tastenkombination [Alt] plus Funktionstaste (meistens [F1] bis [F6]) umschalten kann. Von einer grafischen Oberfläche gelangen Sie mit [Strg+Alt] plus Funktionstaste [F1] bis [F6] zu einem Textbildschirm.

Prompt

Die Eingabeaufforderung (auch Bereitschaftszeichen genannt) signalisiert die Bereitschaft einer Shell, einen Befehl auszuführen. Da der Prompt konfiguriert werden kann, findet sich auf einigen Systemen einer, der das aktuelle Verzeichnis anzeigt, andere Rechner, häufig in Netzwerken, geben auch den jeweiligen Rechnernamen aus. Bei den Puristen unter den Administratoren finden Sie womöglich nur einzelne Zeichen wie %, > oder $.

Shell-Variablen

Viele Funktionen der bash werden durch Variablen gesteuert, die wiederum Einfluss auf die Gesamtfunktion eines Systems ausüben. Die Grundeinstellungen in den Dateien /etc/profile, /etc/profile.local, /etc/bashrc (je nach Distribution) werden zunächst eingelesen. Anwender haben die Möglichkeit, diese Einstellungen zu individualisieren, indem sie in ihrem Homeverzeichnis die entsprechenden Punkt-Dateien editieren.

Pfadnamen

Ein absoluter Pfadname, häufig auch vollständiger Pfadname genannt, beginnt mit dem Wurzelverzeichnis Root, symbolisiert durch /. Er setzt sich in der Regel aus /Verzeichnisname/ggf_weitere_Verzeichnisse/Dateiname zusammen. Ein relativer Pfadname beginnt im aktuellen Verzeichnis. /Verzeichnisname wird durch einen Punkt (.) ersetzt, dies ergibt den Aufruf ./ggf_weitere_Verzeichnisse/Dateiname. So kann das System (auch bei gleichnamigen Dateien) unterscheiden, welcher Datei der Aufruf gilt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Ein neuer Anstrich
    Jetzt ist Schluss mit dem grauen Shell-Alltag – renovieren Sie die Konsole und verpassen Sie ihr mit ANSI-Escape-Sequenzen einen neuen Look.
  • Bash-Konfiguration, die zweite
    In diesem zweiten Teil der Serie über die Konfiguration der Bash wird es noch einmal praktisch: Das Einstellen des Prompts, und die für die Fehlersuche so nützlichen Tracing-Modi werden beschrieben.
  • Textfenster einstellen mit Xtermcontrol
    X-Terminals lassen sich auf vielfältige Weise einstellen. Die Software xtermcontrol hilft dabei, ohne dass sich der Anwender die sonst nötigen Spezialzeichen merken muss.
  • Farbige Shell-Prompts und "ls"-Ausgaben
    Die Bash lässt sich in vielfältiger Weise konfigurieren und den persönlichen Vorlieben anpassen. Ein individueller Prompt kann die Übersichtlichkeit fördern, und auch die Ausgabe von "ls" wird mit Farben lesbarer.
  • Zu Befehl: date & cal
    Die Kommandozeilen-Tools cal und date erzeugen Kalender und bearbeiten Datum und Uhrzeit. Wenn man sie geschickt einsetzt, kann man daraus zum Beispiel eine kleine Geburtstagsverwaltung machen.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...