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
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.
./something
wird 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./
cd
ist 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
Cris