hallöli!
ich hab da mal wieder ne frageeee:
ich hab mir unter suse 7.1 den opera6 browser runtergeladen. hab ich auch installiert bekommen. alles klappt prima.
jetzt wüßte ich nur gern, warum das so geklappt hat. ich hab mir das paket als tar.gz runtergeladen und entpackt. kein problem.
dann hab ich versucht install.sh und runme.sh auszuführen. es hat nicht geklappt.
für linux war es so, als wären es keine ausführbaren programme.
dann hab ich den MidnightCommander mc gestartet. als ich dieser beiden dateien nun unter dem mc gestartet hab, hats plötzlich funktioniert.
genau so gings mir auch mit setiathome, was ich mir runtergeladen hab. ich konnte das auch nur per MidnightCommander starten.
warum ist das so? und warum kann ich sowas nicht direkt über die shell starten? oder gibts da noch einen speziellen befehl für?
vielen dank
Silent Bob
Linux 15.068 Themen, 107.492 Beiträge
wie hast Du versucht, die Programme zu starten ??
repi
hi repi!
ich bin davon ausgegangen, daß die programme selbststartend sind. ich hab also in der shell einfach nur den programmnamen eingegeben. (ich bin das so von .exe files gewöhnt ;-)
dann hab ichs noch mal mit einem run und mal mit einem start davor versucht. ging alles nicht.
Wenn unter Linux die Programme nicht in einem Pfad stehen, der in der Pfadvariable vereinbart ist, so funktioniert das nicht (Sicherheitsaspekt)
Du musst dann z.B. ./install.sh eingeben !
repi
aha. thx schonmal.
also ist das dann wohl grundsätzlich so? also immer ./ vor einem programm. gut, danke ich werds mal probieren.
was hat es dann mit der pfadvariablen auf sich?
Hi bob,
Lass mich mal eine erklärung versuchen:
Alle Ausführbaren Dateien liegen in Verzeichnissen, die in der Pfadvariable angegeben sind. Das sind u.a. /bin /sbin /usr/share/bin und so weiter. ./ (also das Verzeichnis, in dem man gerade ist) ist nicht angegeben, aus folgendem Grund:
Nimm an, jemand hackt dein System und legt dir ein Datei mit Namen "ls" in dein Home-Verzeichnis (sog. Kuckucksei). Statt aber das Directory zu listen, soll der Befehl deine Festplatte formatieren. Wenn Du dich nun einloggst, und in dein Home-Verzeichnis gehst, und dann "ls" aufrufst, wäre Deine Festplatte formatiert....wäre.... wenn da nicht die Pfadvariable wäre. Denn die Pfadvariable legt fest, wo sich ausführbare Dateien befinden, und sucht die Pfade der Reihe nach nach dem Befehl "ls" durch. Wird er in den Verzeichnissen nicht gefunden, gilt er als nicht existent.
Wenn du eine ausführbare Datei nun trotzdem ausführen willst, die nicht in den Verzeichnissen der Pfadvariable angegeben ist, musst Du das Verzeichnis explizit angeben. Linux geht dann davon aus, dass Du weisst was Du tust. Das geschieht mit dem ./ vorne dran. Damit gibst Du quasi das Verzeichnis an, in dem du dich gerade befindest.
Um also die oben angesprochene "ls"-Datei (Kuckucksei) auszuführen müsstest Du in deinem home-Verzeichnis ./ls eingeben, und das tut niemand.
Deshalb sollte man in der Pfasdvariable auch niemals ./ mitangeben, da sonst eine Sicherheitslücke auftritt.
Ich hoffe, das ist einigermassen gut erklärt, ansonsten frag' nochmal
Bis denne
poly
hallo und thx poly!
also das hab ich soweit verstanden. ist ja so ähnlich wie die "path" anweisung in der dos bzw. windows welt (naja, so in etwa).
wo befindet sich die pfadvariable? man müßte dann doch noch andere verzeichnisse hinzufügen können, oder?
Du kanst Deinen zusätzlichen Pfad in /etc/profile eintragen !
Der Eintrag /. startet auch Anwendungen vom Verzeichniss, wo Du Dich gerade befindest !
Nur ist wie bereits beschrieben, dann die Sicherheit dahin !
Hi bob und repi,
eigentlich richtig, man kann die Pathvariable verändern.
Leider hat repi den Punnkt vergessen, also /etc/.profile (nichts für ungut!). wenn du es in die /etc/.profile eintragen willst, erwitere einfach die $PATH um ./ wie du eas da vorfindest. Besser ist es diese möglichkeit root nicht zu gestatten und daher den Eintrag in die .profile oder .bashrc oder .login in deinem Home-Verzeichnis zu machen.
Wenn Du als root mehrere Sachen installieren willst, kannst Du auch
user@maschine> export PATH=.:$PATH
oder
user@maschine> export PATH=$PATH:.
eingeben, Ist der Unterschied klar? die Pathvariable wird von vorn nach hinten durchgelesen, wenn du einen Befehl eingibst. Wenn Du den ersten Befehl eingibst, wird zuerst in dem lokalen Verzeichnis gesucht. Wenn Du den 2. eingibst, wird erst als letztes in dem lokalen Verzeichnis gesucht. 2. Befehl = viiiiiiiiiiieeeeeeeeeellll sicherer.
im Prinzip hast Du ganz recht mit der Pfaadvariable unter DOS, obwohl es kleine Unterschiede gibt.
Mit
echo $PATH
kannst Du Dir übringes die Pfade anzeigen lassen. Z.b:
/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:......
Viel Spass
poly
