[erledigt] dot slash (./) - Warum?

Hinweis: In dem Thema [erledigt] dot slash (./) - Warum? gibt es 6 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • 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

    Für den Inhalt des Beitrages 15093 haftet ausdrücklich der jeweilige Autor: 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?

    Für den Inhalt des Beitrages 15101 haftet ausdrücklich der jeweilige Autor: Bkmzde

  • Zitat von Bkmzde;15101

    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?


    Nicht ganz. Es geht die Pfade durch, wie sie in der Umgebungsvariablen PATH angegeben sind. Bei mir Beispielsweise:

    Code
    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

    Code
    echo $PATH

    kannst du dir deine Umgebungsvariable PATH ausgeben lassen und mit

    Code
    export

    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

    Für den Inhalt des Beitrages 15150 haftet ausdrücklich der jeweilige Autor: Bkmzde

  • Stimmt, vorausgesetzt, ./ steht ganz am Anfang in Path. Sonst wird der richtige Bash-Befehl ausgeführt.

    Für den Inhalt des Beitrages 15157 haftet ausdrücklich der jeweilige Autor: rogi

  • 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ß

    Für den Inhalt des Beitrages 15282 haftet ausdrücklich der jeweilige Autor: rogi