Home / LinuxUser / 2001 / 07 / Dr. Linux

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Debian 7.1 ist erschienen
(179 Punkte bei 5 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Schnell mal die Shell

Dr. Linux

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 07/13

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

whowatch
Nutzer und Prozesse mit whowatch überwachen
Tim Schürmann, 18.06.2013 12:49, 0 Kommentare

Wenn Administratoren herausfinden wollen oder müssen, was die Benutzer auf einem System gerade so treiben, dann hilft ihnen whowatch. Das kleine Kommandozeilenprogramm zeigt in Ec...

Aktuelle Fragen

SUSE 12.3 64Bit: Miro funzt nicht
Wimpy *, 14.06.2013 13:05, 5 Antworten
Seit Installation von openSUSE 12.3 64Bit startet Miro nicht. (Version 5.0.4-1.24-x86_64 von Pa...
Kontakt via QR code hinzufügen
Herman Sproesser, 17.05.2013 17:46, 4 Antworten
Hi hab in der aktuellen ausgabe 06.2013 den artikel über QR Codes gelesen. Ich hab nartürlich...
Dateimanager Dolphin, wo legt er die Datei Kommentare ab?
Uwe Heine, 16.05.2013 15:19, 1 Antworten
Suse Linux 12.1 - KDE 4.7.2 / Dolphin 1.7. Ich habe bei vielen Dateien über Dolphin Kommentare...
wie baut man Kernel Module so, dass sie mit jedem Kernel laden?
GoaSkin , 22.04.2013 10:22, 1 Antworten
Hallo, baut man anhand eines Kernel-Sources Module, nutzt Linux im Normalfall eine strikte V...
Problem beim Installieren von SuSe 12.3
Georg Prokert, 14.04.2013 00:04, 16 Antworten
Hallo, auf meinem neuem Laptop (Acer Aspire V3-771, Intel Core i5-3230 M, Intel HD Graphics 4...