Was ist der Unterschied zwischen Dateiname und ./Dateiname unter Linux?


Antworten:


18

Bei Datendateien spielt dies keine Rolle - beide Anweisungen verweisen auf die Datendatei in Ihrem aktuellen Verzeichnis. (Zum Beispiel cat filenameund cat ./filenamesind semantisch identisch.)

Anders sieht es aus, wenn sich der betreffende Dateiname auf eine ausführbare Datei bezieht , dh das erste (oder sogar einzige), was Sie in die Befehlszeile eingeben. ./filenamesucht nach der ausführbaren Datei in Ihrem aktuellen Verzeichnis und nirgendwo anders. filenameAuf der anderen Seite wird die Umgebungsvariable ausgewertet PATHund filenamein jedem darin gespeicherten Verzeichnis gesucht (das möglicherweise Ihr aktuelles Verzeichnis enthält oder nicht).

./filename(oder eine andere /path/to/filename) wird daher bevorzugt, wenn Sie eine bestimmte ausführbare Datei ausführen möchten , nicht die erste, die in Ihrem PATH gefunden wird.


6

Wenn Sie ein Programm filenameausführen, müssen Sie das erste in Ihrem $PATHund das zweite Programm im aktuellen Verzeichnis ausführen.

Wenn Sie diesen Dateinamen als Argument für ein Programm wie in do_something filenameoder verwenden do_something ./filename, bedeuten sie dasselbe.


5

Sie beziehen sich auf die Befehlsausführung, richtig?

Es gibt eine Umgebungsvariable PATH, die einige durch Semikolon getrennte Systemverzeichnisse enthält. Wenn Sie eingeben command, sucht das System in diesen Verzeichnissen in der angegebenen Reihenfolge, um eine ausführbare Datei mit dem Namen <Befehl> zu finden. Wenn es sie findet, versucht es, sie auszuführen. Sie können Ihren Pfad über echo $PATHin Bash sehen. Zum Beispiel:

$ echo $ PATH
/ sbin: / bin: / usr / sbin: / usr / bin: / usr / games: / usr / local / sbin: / usr / local / bin: / home / ivanatora / bin: / usr / local / kde4 / bin: / usr / local / kde4 / bin

Bei der Eingabe geben ./filenameSie den genauen Pfad an: das aktuelle Verzeichnis. Sie können sehen, dass sich das aktuelle Verzeichnis selten in Ihrem $ PATH befindet (aus Sicherheitsgründen). Wenn Sie also eine Datei aus dem aktuellen Verzeichnis ausführen möchten, verwenden Sie ./filename.

Um eine Datei über ihren Pfad auszuführen (insbesondere wenn sie nicht in $ PATH enthalten ist), können Sie auch Folgendes <path>/fileeingeben:

/ sbin / ifconfig



1

Es hängt davon ab, unter welchen Umständen Sie es verwenden.

Als Argument, zB "Programmdateiname", liegt es dann am Programm, aber im Allgemeinen sind sie identisch.

Als Programmname, z. B. "Dateinamenargumente", durchsuchen "Dateinamenargumente" PATH, um die Binärdatei zu finden, während "./Dateinamenargumente" das Programm im aktuellen Verzeichnis verwenden. Dies ist natürlich nützlich, wenn. ist nicht im PFAD, aber es ist auch nützlich, diesen zu verwenden, selbst wenn. ist im Pfad, vielleicht weil es mit einem früheren Eintrag übereinstimmt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.