Home / LinuxUser / 2001 / 07 / Dr. Linux

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

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 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 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 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...