./ gegenüber normaler Ausführung

Dies ist wahrscheinlich eher eine Frage für Unix-Systeme, aber da ich sie auf meinem Mac Pro habe, hoffe ich, dass ich hier eine Antwort finden werde:

Wenn ich zu navigiere/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home/db/bin

Mit einer CD kann ich den in bin vorhandenen Befehl startNetworkServer nicht ausführen, stattdessen kann ich ihn über ausführen ./startNetworkServer.

Allerdings ab~

MacCris:~ cris$ /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home/db/bin/startNetworkServer

es geht ohne ./

Irgendeine Idee warum? (Rechte bezogen?)

Danke

Antworten (2)

Dies ist auf das Verhalten Ihrer Shell zurückzuführen, die dort in Terminal.app ausgeführt wird. Es ist wahrscheinlich die Bash- Shell

Wenn Sie die Shell auffordern, einen Befehl auszuführen, wenn Sie einen absoluten Pfad angeben (der wie /Ihr zweiter mit beginnt), versucht sie, dieses Programm unter diesem Pfad auszuführen. Wenn Sie einen relativen Pfad angeben (dh einen, der nicht mit beginnt /), wird versucht, einen absoluten Pfad zu erstellen, indem die Verzeichnisse, die sich in Ihrer PATH-Umgebungsvariablen befinden, Ihrer Eingabe vorangestellt werden. Da sich Ihr aktuelles Verzeichnis oder .nicht auf Ihrem PATH befindet, kann es keine auszuführende Datei finden. Wenn der Pfad mit einem beginnt, .wird dieser durch den absoluten Pfad Ihres aktuellen Verzeichnisses neu erstellt und somit ein Pfad erhalten, der ausgeführt werden kann.

  • ~= Home-Ordner sonst nichts.

  • ./somethingwird dieses Etwas ausführen (sei es ein Skript oder eine Binärdatei).
    Das Schreiben des vollständigen Pfads ist dasselbe wie das Ausführen von with./

  • cdist das Verzeichnis ändern, also wird es nicht ausgeführt

Dies sind alles standardmäßige Unix/Linux-Befehlszeilenbefehle

Referenzen:
http://linuxcommand.org/learning_the_shell.php http://www.arachnoid.com/linux/shell_programming.html

Danke ... aber nicht, dass ich diese Befehle (grundlegende) nicht kenne, ist, dass das Verhalten anders ist, wenn ich versuche, sie über den vollständigen Pfad auszuführen oder wenn ich mich in diesem Verzeichnis befinde