Wie lässt man "./" weg, wenn Skripte im aktuellen Verzeichnis ausgeführt werden?

10

In einigen Tutorials über das Internet können sie ein Skript im aktuellen Verzeichnis ausführen, ohne Folgendes zu tun:

./script

Wie lässt du das weg? Ich verwende CentOS 5.6 x64. Ich möchte es so laufen lassen

script

Aivan Monceller
quelle
3
Beachten Sie, dass dies fast immer eine schlechte Idee ist, insbesondere für den Root-Benutzer.
David Schwartz
1
Was ist der ganze Zweck / die ganze Geschichte hinter dem ./ überhaupt?
Pete
Ich bin nur neugierig, warum es immer haben muss ./
Aivan Monceller
Der letzte Kommentar könnte meiner Meinung nach eine separate Frage sein - es ist wichtig zu verstehen, wie man Programme im Allgemeinen ausführt!
Rozcietrzewiacz
4
@Pete (und Aivan): Unter Linux / UNIX führt die Shell Programme nur aus, wenn sie den Pfad zu ihnen kennt (ob mithilfe eines von Ihnen angegebenen Pfads oder durch Durchsuchen der PATH-Variablen). Es wird nicht davon ausgegangen, dass Sie das aktuelle Verzeichnis wie Windows durchsuchen möchten. Es sucht genau das, was Sie von ihm verlangen, über die Variable PATH. '.' ist ein Verweis auf das aktuelle Verzeichnis. Wenn Sie also './script.sh' eingeben, geben Sie den Pfad an.
Kasius

Antworten:

26

Irgendein von:

  1. Fügen Sie Ihrem PATH das aktuelle Arbeitsverzeichnis hinzu: PATH=${PATH}:.(Dies wird als Sicherheitsrisiko angesehen.)
  2. Fügen Sie der PATH-Variablen explizit den Pfad hinzu, der Ihr Skript enthält (dies ist kein Sicherheitsrisiko, wenn der Schreibzugriff auf dieses Verzeichnis eingeschränkt ist).
  3. Platzieren Sie Ihr Skript an der richtigen Stelle, auf die PATH bereits verweist (~ / bin, / usr / local / bin, ...).

Die letzte Option ist möglicherweise die beste.

Nils
quelle