
Mögliches Duplikat:
Was stellen „/“, „./“, „../“ bei der Pfadangabe dar?
Warum brauche ich ./
Befehle, um sie unter Mountain Lion ausführen zu können?
Wenn ich beispielsweise MySQL verwende, muss ich im Terminal Folgendes eingeben:
./mysql -u itsme -p
Außerdem erstelle ich Befehlszeilen-Anwendungen und mache meine Dateien ausführbar. Und ich muss den Befehl ./
so ausführen …
./myawesomeapp dothis
Ich weiß, ./
dass damit das aktuelle Verzeichnis gemeint ist, aber wie kann ich Befehle ausführen, ohne es verwenden zu müssen?
Antwort1
Wenn Sie das Verzeichnis mit Ihren Binärdateien in Ihre PATH
Umgebungsvariable einfügen, können Sie sie aufrufen, ohne den Pfad anzugeben (also die ./
).
Ich vermute, dass Sie wahrscheinlich Bash als Shell verwenden (Sie können dies überprüfen, indem Sie ausführen echo $SHELL
). Wenn dies der Fall ist, fügen Sie Folgendes zu Ihrem hinzu.bashrc
export PATH=$PATH:/whatever/path/you/want/to/add
Antwort2
Sie müssen die ausführbare Datei in einem der in der Umgebungsvariable aufgeführten Verzeichnisse installieren $PATH
.
echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin
Passen Sie die Datei an $PATH
, indem Sie sie ändern ~/.profile
.
export PATH=$PATH:/Users/me/bin
Es ist möglich, auf das ./
Always zu verzichten, indem .
Sie zu hinzufügen $PATH
. Dies könnte jedoch ein Sicherheitsproblem darstellen – wenn nicht auf Ihrem persönlichen Computer, dann wenn Sie die schlechte Angewohnheit beim Betrieb eines Servers übernehmen.
Antwort3
Obwohl es möglich ist, Ihrer $PATH-Variable etwas hinzuzufügen .
, wird dringend davon abgeraten. Wenn Sie an eine beliebige Stelle im Dateisystem gehen und etwas eingeben, von dem Sie glauben, dass es ein Programm ausführen wird ( vi
, emacs
, ls
, ps
, usw.), wird eine Datei im lokalen Verzeichnis zum Kandidat für die Ausführung. Wenn Sie Pech haben, ist das überhaupt NICHT das Programm, das Sie ausführen wollten – und wenn Sie es als ausführen root
, ist es sogar noch schlimmer, weil jemand möglicherweise eine lokale Datei hinzufügt ls
, die etwas völlig anderes tut als das eigentliche Programm ls
(und natürlich auch echtes ls ausführt – andernfalls wäre es offensichtlich, dass es kein echtes ls ist, und der Benutzer würde anfangen, die Situation zu untersuchen). [1]
Stattdessen sollten Sie einen absoluten Pfad zu dem Ort hinzufügen, an dem Sie Ihre ausführbaren Dateien haben, z. B. /projects/mycurrentprojects/bin
- oder "relativ zu Home", z. B. ~/bin
- wenn Sie möchten, dass der Pfad unter ALLEN Umständen funktioniert, ist es besser home\mats\bin
, [natürlich unter Verwendung des richtigen Benutzernamens für Sie selbst] zu verwenden. Auf diese Weise sind nur Dateien in einem bestimmten Satz von Verzeichnissen anwendbar, und unabhängig davon, wo Sie sich befinden, werden nur Programme, die sich in diesen bestimmten Verzeichnissen befinden, als "mögliche Kandidaten zum Ausführen" ausgewählt.
[1] Ja, mir ist klar, dass auch hier die Suchreihenfolge und verschiedene andere Faktoren eine Rolle spielen. Aber generell ist es keine gute Idee, „aktuelles Verzeichnis“ hinzuzufügen, egal welche Einwände es gibt.