Linux 15.036 Themen, 107.107 Beiträge

Frage zur Syntax der bash

Michael-2712 / 4 Antworten / Baumansicht Nickles

Hi Leute!


Wenn ich ein Programm in ein dem Verzeichnis ausführen will, in dem ich mich gerade befinde, muss ich "./[PROGRAMMNAME]" eingeben. Es hat aber auch schon nur "[PROGRAMMNAME]" gereicht (ich weiß aber nicht mehr, in welchem Zusammenhang). Im Internet bin ich jetzt auf folgendes gestoßen:


[PROG] -> Programm [PROG], welches sich im Pfad befindet, starten


./[PROG] -> Programm [PROG], welches sich im aktuellen Verzeichnis befindet, starten


Ich verstehe den Unterschied zwischen den beiden Erklärungen nicht. Kann mir das bitte jemand erklären?


Danke!

bei Antwort benachrichtigen
Klaus_T Michael-2712 „Frage zur Syntax der bash“
Optionen

Pfad ist eine Umgebungsvariable. Gebe mal 'echo $PATH' ein, dann siehst du, welche Pfade die Umgebung beinhaltet. Alle Programme, die in diesen Verzeichnissen liegen, werden ausgefuehrt, ohne dass man den Pfad angeben muss.
Willst du ein Programm auisfuehren, dass nicht im Pfad liegt, musst du entweder den vollen Pfad angeben oder in das Verzeichnis reinwechseln und das Programm mit ./programmname aufrufen.
Du kannst das aktuelle Verzeichnis allerdings mit in $PATH aufnehmen, dann brauchst du ./ vor dem Programmname nicht mehr mit eingeben, hast alleredings dann ein Sicherheitsproblem.
Bye, Klaus

bei Antwort benachrichtigen
Zaphod Michael-2712 „Frage zur Syntax der bash“
Optionen

.... dein aktuelles Verzeichnis muss sich nicht im Pfad befinden. In der Variable PATH befinden sich die Verzeichnisse, in denen nach ausführbaren Dateien gesucht wird. Ist ein Programm nicht in einem von diesen, muss es mit absolutem oder relativem Pfad aufgerufen werden. Steht man im gleichen Verzeichnis wie das Programm, ist dieser Pfadname eben ./programmname.
HTH, Z.

bei Antwort benachrichtigen
rudenz Michael-2712 „Frage zur Syntax der bash“
Optionen

.. wenn in $PATH das aktuelle Verzeichnis enthalten ist, kannst Du auf die Angabe von "./" verzichten. Bitte gebe echo $PATH ein. Wenn dort irgendwo zwischen zwei Doppelpunkten ein Punkt auftaucht ( :.: ), symbolisiert der Punkt das aktuelle Verzeichnis (echo $PWD). Das bedeutet, dass auch das aktuelle Verzeichnis nach PROGNAME durchsucht wird.

Bei root wird dringend abgeraten, diesen Punkt in $PATH zu setzen. Es birgt ein sehr hohes Gefahrenpotential - nicht nur in produktiv genutzten UNIX-Systemen.

Eine sehr gute Hilfe im Umgang nicht nur mit Linux ist unter http://www.selflinux.org zu finden.

Viele Grüße

K.

bei Antwort benachrichtigen
Michael-2712 Nachtrag zu: „Frage zur Syntax der bash“
Optionen

OK. Jetzt habe ich verstanden. Danke!

bei Antwort benachrichtigen