Moin moin!
Mich quält eine Frage. Wenn ich eine Programm kompiliert habe und dann das Programm ausführen möchte, dann muss ich die erstellte Datei mit ./%ANWENDUNG% aufrufen.
Warum ist es bei ausführbaren Dateien nötig?
Grüße
Bkmzde
Moin moin!
Mich quält eine Frage. Wenn ich eine Programm kompiliert habe und dann das Programm ausführen möchte, dann muss ich die erstellte Datei mit ./%ANWENDUNG% aufrufen.
Warum ist es bei ausführbaren Dateien nötig?
Grüße
Bkmzde
Ahh, das System sucht ausführbare Dateien immer im /home/bin und deswegen muss ich ihm sagen, wenn die Datei nicht dort liegt, wo sie liegt z.B. im derzeitigen Verzeichnis sprich ./. Richtig?
Zitat von Bkmzde;15101Ahh, das System sucht ausführbare Dateien immer im /home/bin und deswegen muss ich ihm sagen, wenn die Datei nicht dort liegt, wo sie liegt z.B. im derzeitigen Verzeichnis sprich ./. Richtig?
Nicht ganz. Es geht die Pfade durch, wie sie in der Umgebungsvariablen PATH angegeben sind. Bei mir Beispielsweise:
PATH="/usr/lib/mpi/gcc/openmpi/bin:/home/[Benutzername]/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin"
Du könntest nun hergehen und zu dieser Umgebungsvariablen noch das Verzeichnis dazu angeben, in das deine Binaries wandern und könntest auf das ./ verzichten. Linux prüft nicht, ob es das angegebene Binary vielleicht im aktuellen Verzeichnis findet, während Windows und auch DOS, auch im aktuellen Verzeichnis nachsehen, ob dort das angegebene *.exe ist.
Mit
kannst du dir deine Umgebungsvariable PATH ausgeben lassen und mit
bekommst du alle gesetzten Umgebungsvariablen. Wie du zu PATH noch ein weiteres Verzeichnis angeben kannst, dürfte hier beschrieben sein: http://linuxwiki.de/UmgebungsVariable .
Ahh, danke! Ein Sicherheitsfeature ist das wohl auch. Das hat wohl den Sinn, dass z.B. nicht einfach ein Benutzer ein kleines Tool mit dem selben Namen wie ein Bashbefehl in seinem Home-Verzeichnis ablegt und vielleicht der Root-User in das Verzeichnis geht und dann statt den Befehl "ll" ein Binary ausführt mit dem Namen "ll" und dann dem User unbemerkt und ungewollt eine Root-Bash zuweist oder Schadcode ausführt.
Grüße
Bkmzde
Stimmt, vorausgesetzt, ./ steht ganz am Anfang in Path. Sonst wird der richtige Bash-Befehl ausgeführt.
Habe was falsches geschrieben, Path betrifft nicht die Bash-Befehle, nur die Anwendungen. Heißt ein Script wie ein Bash-Kommando, muss es mit ./ ausgeführt werden.
Gruß