Home / LinuxUser / 2001 / 07 / Dr. Linux

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 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

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

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

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...