Hallo Besucher, der Thread wurde 6,2k mal aufgerufen und enthält 80 Antworten

letzter Beitrag von Freddy am

Die "./ls"-Diskussion... (aus "Ausflug in die Linux-Welt")

  • Heute doch mal Bashing:


    Hab mir aus GOG das Kerbal Space Program für Linux gezogen. Kostenloses (Spiele/Apps usw.) bei Steam, GOG, Origin usw. - Sammelthread


    Ausführbar gemacht:

    chmod +x kerbal_space_program_1_12_5_03190_61624.sh

    Installiert:

    sudo ./kerbal_space_program_1_12_5_03190_61624.sh

    Der grafische Programm-Installer hat auch nett nach einem Pfad gefragt - also vorgegeben:

    User/Games/Kerbal Space Program

    Das einzige - er hat über die Locale gemosert, aber das lese ich als, er hat nun en_us genommen. Sollte ja kein Problem sein.



    Hat auch ohne Probs installiert. Fragte mich noch, ob ich gerne Verknüpfungen hätte - Ja, aber bitte doch.


    Dann ist nix auf dem Desktop, noch im Launcher zu finden ... *grrr*


    Will ich ins installierte Game Verzeichnis, brauche ich Privilegien?? OK - meinetwegen ... aber auch hier nix Startbares. Oder wie starte ich diese start.sh?

  • Ich komme ja noch nicht mal ins Verzeichnis:


    jpk@JPK-Mint-Game:~/Games$ cd 'Kerbal Space Program'

    bringt:

    bash: cd: Kerbal Space Program: Permission denied

    Kann ich diesem Spiel nicht einfach normale Rechte geben? Was ist da bei der Installation schief gelaufen?

    Selbst wenn ich es deinstallieren wollte - ich käme ja noch nicht mal rein.

  • sh (bash) start.sh


    oder halt : chmod +x start.sh

    start.sh

    ./start.sh statt start.sh :-)



    JPK64

    das ist nen Userland installer, du hasr das aber als root installiert, die Ordner und files gehören dementsprechend root und nicht dir, das ist (vermutlich) ausführbar für root, und root hat die icons jetzt auch auf dem desktop.

  • Kann ich das irgendwie ändern nachträglich?

    Oder deinstallieren und neu im Userland installieren?

    Edit - hab ich bei der Installation was verkehrt gemacht?

  • Edit - hab ich bei der Installation was verkehrt gemacht?

    Ja:

    du hast das aber als root installiert,


    Kann ich das irgendwie ändern nachträglich?

    Unsicher was da genau passiert ist, du kannst aber einfach den ganzen ordner erstmal an dich übertragen.


    chown -R "DEINUSERNAME:DEINUSERNAME" /pfad/zum/ordner


    danach ist vielleicht schon alles gut.

    wenn nicht den uninstaller als root ausführen, danach als du installieren

  • Ich bin (noch) zu dumm für Linux. *denn sie wissen nicht, was sie tun* Mir war nicht klar, das sudo mit root-Rechten installiert (eigentlich dumm das anzunehmen, wenn man schon ein ditzend mal sudo im Terminal genutzt hat ... aber Dinge tun und Dinge verstehen, sind zwei verschiedene Dinge :) )

    Ich hab es erst mal einfach deinstalliert als root. Das habe ich noch hinbekommen.


    Mein Fehler war - das ¨./" beim ersten Versuch nicht dem .sh-Aufruf vorangestellt zu haben. Deswegen habe ich es halt mit sudo (und dann automatisch ./) installiert. https://wiki.ubuntuusers.de/sudo/


    Wie heisst ./ eigentlich im Sprachgebrauch?


    Der erneute Versuch ohne sudo hat dann auch direkt funktioniert :thumbsup: ...


    Dreimal hinfallen, um einen Schritt weiterzukommen - ich bin in der Linux-Baby-Phase :whistling:

  • Dreimal hinfallen, um einen Schritt weiterzukommen - ich bin in der Linux-Baby-Phase :whistling:

    Mut zur Lücke! In dieser Phase war ich auch einmal.

  • Wie heisst ./ eigentlich im Sprachgebrauch?

    Wenn du ein programm aufrufst musst du immer über irgend einen weg mitgeben wo sich das befindet.

    sudo oder bash (um bei den in dem thread benutzen beispielen zu bleiben, gilt natürlich auch für vieles anderes) rufst du nur mit dem dateinamen auf, und deine shell guckt dann die pfade die in der $PATH variable sind der reihe nach durch und nimmt das erste ausführbare programm das so heist.


    Wenn du etwas ausführen willst was nicht im pfad liegt musst du der shell genau mitteilen wo es liegt.

    das kann z.b. so aussehen: /bin/bash

    oder /home/jpk65/Games/Kerbal_Space_Programm/star.sh

    du musst aber nicht immer den kompletten pfad mit angeben, der kann auch relativ sein.

    ./start.sh, da steht der punkt für "hier" also der ordner in dem du grade bist.

    .. wäre halt ein ordner zurück

    ./start.sh heist also "die star.sh in diesem ordner"


    Dreimal hinfallen, um einen Schritt weiterzukommen - ich bin in der Linux-Baby-Phase :whistling:

    Und du fragst und hinterfragst viel, dadurch lernt man dann auch schnell :thumbsup:

  • Wie heisst ./ eigentlich im Sprachgebrauch?

    Das Punkt-Verzeichnis kennen Windows und MS-DOS übrigens auch. Das ist in unixoiden Systemen aber nicht standardmäßig im Suchpfad enthalten und muß eben explizit angegeben werden, wenn man etwas aus dem aktuellen Verzeichnis ausführen möchte. Damit soll verhindert werden, daß man versehentlich etwas aus dem aktuellen Verzeichnis startet wenn man eigentlich ein Systembefehl auszuführen wollte.

  • Mein Fehler war - das ¨./" beim ersten Versuch nicht dem .sh-Aufruf vorangestellt zu haben. Deswegen habe ich es halt mit sudo (und dann automatisch ./) installiert. https://wiki.ubuntuusers.de/sudo/

    Wie heisst ./ eigentlich im Sprachgebrauch?

    Das ist doch eigentlich völlig logisch. Du befindest dich in einem Verzeichnis. Mit ls siehst du ein ausführbares Programm. Und da die direkte Eingabe des Programmnamen zum Starten irgendwelchen fundamentalistischen Konventionen wiederspricht, muss da immer ein ./ davor. Weil die Shell sonst zu blöd ist, das zu finden. Damit lebt man einfach, ohne es zu verstehen. So wie mit vielen anderen Dingen unter Linux.

  • Wie heisst ./ eigentlich im Sprachgebrauch?

    Wenn du ein programm aufrufst musst du immer über irgend einen weg mitgeben wo sich das befindet.

    Das Betriebssystem weiss, wo ich mich befinde. Sonst würde bei ls nicht das aktuelle Verzeichnis aufgelistet. Beim Aufruf eines Programmes oder eine Shell-Scriptes hat es das dann plötzlich vergessen?


    Erklärt mir bitte welchen anderen Zweck das ./ hat außer die User zu schikanieren. :D

  • Weil die Shell sonst zu blöd ist, das zu finden. Damit lebt man einfach, ohne es zu verstehen. So wie mit vielen anderen Dingen unter Linux.

    Wenn man keinen Pfad eingibt, geht die Shell die Pfade in der PATH-Variable durch. Prinzipiell könnte die auch ./ enthalten, aber das wäre aus den oben erwähnten Grund nicht ratsam.

  • Weil die Shell sonst zu blöd ist, das zu finden. Damit lebt man einfach, ohne es zu verstehen. So wie mit vielen anderen Dingen unter Linux.

    Wenn man keinen Pfad eingibt, geht die Shell die Pfade in der PATH-Variable durch. Prinzipiell könnte die auch ./ enthalten, aber das wäre aus den oben erwähnten Grund nicht ratsam.

    Die Shell könnte auch einfach mal vorher nachschauen, ob sich das gesuchte Programm im aktuellen Verzeichnis befindet. Und dann erst PATH bemühen. So funktioniert das meines Wissens unter Windows (und früher schon unter DOS) und so ist das logisch. Und das wäre das, was ich als User erwarten würden.


    Aber was zählen schon Logik und User unter Linux, wenn es darum geht, irgendwelchen Prinzipien zu huldigen. :verehr:

  • Das ist doch eigentlich völlig logisch. Du befindest dich in einem Verzeichnis. Mit ls siehst du ein ausführbares Programm. Und da die direkte Eingabe des Programmnamen zum Starten irgendwelchen fundamentalistischen Konventionen wiederspricht, muss da immer ein ./ davor. Weil die Shell sonst zu blöd ist, das zu finden. Damit lebt man einfach, ohne es zu verstehen. So wie mit vielen anderen Dingen unter Linux.

    Nee, das ist weil die Shell unter Unixoiden die DAUs vor der Tastertur schützen will. Die Shell sucht immer im PATH nach ausführbare Dateien. Indem du explizit die Shell (mit ./) anweist diese Regel zu umgehen bist du selbst Schuld wenn ls.sh im Pfad z.B. folgenden Inhalt hat: rm -f *.* /

  • Also, soweit ich weiß ist das wegen Security so geändert worden. Es gab halt Leute die lokal ein ls kompiliert haben welches Ihnen root Rechte gegeben hat und danach an das /bin/ls verwiesen. Dann sind die zum root gelaufen, haben behauptet, da geht was nicht und gingen davon aus, dass der root schon irgendwann ls aufrufen wird, was dann das lokale war. Also würden die Shells geändert, damit man angeben muss wenn man etwas lokales ausführen will.

  • Die Shell könnte auch einfach mal vorher nachschauen, ob sich das gesuchte Programm im aktuellen Verzeichnis befindet. Und dann erst PATH bemühen. So funktioniert das meines Wissens unter Windows (und früher schon unter DOS) und so ist das logisch. Und das wäre das, was ich als User erwarten würden.

    Das hat der Windows-Welt über die Jahrzehnte aber auch einige Sicherheitslücken beschert.

    Aber niemand hindert dich ./ in $PATH einzufügen wenn dir das so wichtig ist.


    Schrei dann aber nicht wenn du irgend ein random repository auscheckst oder ein zip entlackst, dann ls tippst und du fremden code ausführst.