Was bedeutet ./ vor einem bestimmten Pfad?

25

Mir wurde gesagt, dass ich das ausführen soll:

./yiic message ./app/messages/config.php

Aber ich verstehe die ./Bedeutung nicht, kann jemand bitte klären.

Hinweis: Glauben Sie mir, das können wir nicht googeln. Ich habe es versucht:

./ bedeutung ./ ubuntu

Es war dasselbe wie nichts. :(

MEM
quelle
3
In diesen Fällen ist es am besten, nach "Punktschrägstrich" zu suchen, was zu diesem sehr nützlichen Ergebnis führte: linfo.org/dot_slash.html
heltonbiker

Antworten:

29

./oder ist einfach .eine Unix-Abkürzung für das aktuelle Verzeichnis.

Sie müssen es angeben, wenn sich das aktuelle Verzeichnis nicht in Ihrem PATH befindet. Der Pfad ist die Liste der Ordner, die beim Ausführen eines Programms durchsucht werden. (Sie können dies durch Schreiben feststellen echo $PATH.) Wenn sich eine ausführbare Datei nicht in Ihrem PATH befindet, müssen Sie zum Ausführen den Ordner angeben, in dem sie sich befindet. Sie können dies tun, indem Sie den vollständigen Pfad zur Datei angeben, wenn sich die Datei jedoch in befindet Das aktuelle Verzeichnis können Sie ./als Kurzschreibweise verwenden.

In ähnlicher Weise steht ../oder steht nur ..die Kurzform für das Verzeichnis über dem aktuellen.

schäbig
quelle
17
Jemand sollte in seiner Antwort angeben, warum $ PATH nicht enthält .. Dies liegt daran, dass die automatische Verwendung des aktuellen Verzeichnisses eine Sicherheitslücke darstellt. Stellen Sie sich vor, jemand anderes erstellt ein Programm, benennt es lsund Sie cdin seinem Verzeichnis und geben dannls
Zan Lynx
1
@Zan Ich habe mich das immer gefragt, danke für deine Antwort auf die Frage, die niemand gestellt hat, aber jemand hätte haben sollen.
Crasic
@ZanLynx toller Kommentar / Zusatz, sollte in die Antwort eingearbeitet werden, da Kommentare verloren gehen können.
NSGaga
15

Jedes Verzeichnis in der Befehlszeile hat zwei "spezielle Verzeichnisse" namens .und ... Dies sind Abkürzungen für das aktuelle Verzeichnis bzw. das Verzeichnis, das das aktuelle Verzeichnis enthält.

Zum Beispiel cd ./more/directory/namesbedeutet dies einfach "Beginne mit dem aktuellen Verzeichnis und fahre mit dem Pfad fort". In ähnlicher Weise cd ..bedeutet der Befehl "ein Verzeichnis wechseln".

Wenn Sie den Namen Ihres aktuellen Verzeichnisses möchten, können Sie den pwdBefehl verwenden. Wenn Sie das -aFlag für verwenden ls, werden diese beiden speziellen Verzeichnisse angezeigt. Das heißt, es ls -awird eine Liste ausgegeben, die mit .und beginnt ...

Kris Harper
quelle
ausgezeichnete Ergänzung root45 +1 :)
Rinzwind
4

Andere haben bereits erklärt, was .und was es ..bedeutet (aktuelles Verzeichnis bzw. übergeordnetes Verzeichnis). Dies gilt für alle Pfadnamen.

Wenn Sie ein Terminal öffnen, starten Sie normalerweise in Ihrem Home-Verzeichnis: ~(das erweitert wird zu /home/username). Die folgenden Pfade sind alle gleich, vorausgesetzt, Ihr aktuelles Arbeitsverzeichnis lautet /home/username:

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username(Das übergeordnete Verzeichnis von /ist noch /)
  • ./././././. (das aktuelle Verzeichnis im aktuellen Verzeichnis im ...)
  • ./ (abschließende Schrägstriche sind für Verzeichnisse zulässig)
  • /home////username/// (und so sind mehrere Schrägstriche)

Verwechseln Sie nicht./program mit . program. ./programFührt eine Datei im aktuellen Verzeichnis mit gesetztem Ausführungsbit aus. . ./programist eine Bash-Sache und kann alternativ so geschrieben werden, source ./programdass Bash-Befehle aus der programDatei im aktuellen Verzeichnis gelesen und in der aktuellen Shell ausgeführt werden.

Wenn Sie sich fragen , warum Sie gerade laufen geditstatt /usr/bin/geditund nicht programstatt ./programoder /home/username/programfinden Sie die dazugehörige Frage:

Lekensteyn
quelle
3

Es bedeutet, von der zu beginnen current directory path.

Nehmen wir an, Sie haben pathFolgendes:

/usr/ /usr/bin/ /usr/local/bin

und drinnen /usr/bin/gibt es eine ausführbare Datei namens yiic.

Wenn Sie yiices herausgeben, würde es das in beginnen /usr/bin/.

Mit dieser Meldung weisen ./yiicSie das System an, im aktuellen Verzeichnis nach dieser ausführbaren Datei zu suchen.

Rinzwind
quelle
Ok ... aber ich verstehe immer noch nicht. Nehmen wir an, ich habe yiic im Inneren /home/mysuser/und navigiere dort mithilfe von cd /home/myuser. Sobald ich drinnen war, glaubte ich, dass es funktionieren sollte, wenn ich nur yiic mache, weil ich angerufen habe, während ich in diesem Verzeichnis war. Aber er sagt Befehl nicht Datei. Wenn ich das gleiche mache und die ./ dann benutze, läuft sie einwandfrei ... Kannst du bitte noch ein bisschen mehr klären?
MEM
@frabjous hat diesen Kommentar ebenfalls beantwortet.
MEM
Nee! Es wird immer in der PATH-Direktive nachgeschlagen, es sei denn, Sie weisen es an, das aktuelle Verzeichnis zu verwenden (mithilfe von ./). Schau dir die Antwort von user45 an: .ist eine spezielle Datei in einem Ordner, die du sehen kannst, wenn du eine ls -laim Verzeichnis
machst