Warum muss ich vor einer ausführbaren Datei immer „./“ eingeben, um sie in Linux auszuführen?

Warum muss ich vor einer ausführbaren Datei immer „./“ eingeben, um sie in Linux auszuführen?

Wenn ich egxc kompiliere durch:

GCC x.c -o x

Um das Ergebnis auszuführen, muss ich schreiben:

./x

Und tippe einfach:

x

Schlägt mit dieser Meldung fehl:

x: Befehl nicht gefunden

Das bedeutet, dass Linux das aktuelle Verzeichnis nicht danach durchsucht! Gibt es (ich bin sicher, dass es einen gibt) einen vernünftigen Grund für dieses Verhalten?

Antwort1

Denn standardmäßig befindet sich das aktuelle Arbeitsverzeichnis nicht in der PATHVariable.

Dies ist eine Sicherheits-/Komfortmaßnahme. Wenn Sie in Ihrem aktuellen Arbeitsverzeichnis Binärdateien/Skripte mit den Namen cd, usw. haben, wäre es sehr ärgerlich, wenn diese standardmäßig ausgeführt würden.ls

Antwort2

Dies bedeutet, dass sich das aktuelle Verzeichnis nicht in der Variable $PATH befindet.

Antwort3

Sie können dies beheben, indem Sie das aktuelle Verzeichnis (dargestellt durch einen einzelnen Punkt) zur PATHUmgebungsvariable hinzufügen.
Die Vorgehensweise hängt von der verwendeten Shell ab.
Wenn Sie Bash verwenden, können Sie die Zeile export PATH=$PATH:.zur .bashrcDatei in Ihrem Home-Verzeichnis hinzufügen.
Wenn Sie CSH oder TCSH verwenden, fügen Sie die Zeile set PATH = ($PATH .)zur Datei .cshrc in Ihrem Home-Verzeichnis hinzu.
Meiner Meinung nach ist dies für einen Desktop-Computer zu Hause aus Sicherheitsgründen eine akzeptable Vorgehensweise.

verwandte Informationen