Configdatei für mehrere Bashscripte

  • Hallo!


    Ich setze gerade einen Raspberry neu auf.

    Dabei miste ich bei den Bashscripten fleißig aus, überarbeite sie und versuche alles etwas übersichtlicher zu gestalten.


    Ich würde gerne für die üblichen Angaben in Form von Variablen (z.B. Pfad, Maildaten, usw.) in einer gemeinsamen Configdatei auslagern, damit ich diese Angaben nicht in jedem einzelnen Script wiederholt einbauen muss.


    Wie setzt man das am besten um?


    Mein erster Gedanke:

    Wenn ich den Pfad (z.B. "cd /path1/path2") für alle Scripte in der Configdatei angebe, wie soll das Script wissen wo es selber ist und wo die Configdatei sicher liegt? Der Aufruf vom Script erfolgt ja oft nicht direkt aus dem Scriptverzeichnis raus.

    Oder geht es nur, wenn ich der Configdatei einen festen Platz gebe, der in Zukunft auch auf weiteren Systemen sich nicht ändert und ich somit die Scripte selber nicht mehr anpassen muss.


    Vielleicht denke ich auch zu kompliziert und habe einen Wurm in meiner Denkweise.


    Im Grunde liegen alle meine Scripte in dem gleichen Verzeichnis bzw. in einem Unterverzeichnis von diesem Verzeichnis. Die Configdatei würde ich da auch unterbringen.


    Mit der Bitte um "Erhellung"... ;)

    Viele Grüße,

    Peter

  • Wenn Du als User pi im Homeverzeichnis ein Verzeichnis bin anlegst, wird nach dem nöchsten login das Verzeichnis in das PATH ENVIRONEMENT des Users pi übernommen. Vllt ist es das, was Du suchst.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Ich würde eine "zentrale" config nehmen, z. B. ~/.config also immer im Root des Users.


    Im Script macht man dann

  • Der Dateiname ist auch nicht gut gewählt, denn es existiert ja schon ein Verzeichnis an selber Stelle mit diesem Namen.

    Wenn du versuchst, die Datei unter dem Namen zu speichern, wirst du das schon merken. :)

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Wenn es systemweite Scripte sind die auch von anderen Nutzern eingesetzt werden wuerde ich die Config in /usr/local/etc stellen.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy:

  • Wenn ich das richtig verstehe, gibt es keine Ideallösung.


    Ich bin bei meinen Raspis der einzige Nutzer, sie sind auch alle ohne GUI, sprich nur über SSH ansprechbar. Meine Scripte laufen alle unter root.


    Als Scriptverzeichnis verwende ich immer=> /root/scripte


    Ich werde meine Configdatei nun "myconfig" nennen und hoffe, dass ich so keine Dateinamenkonflikte bekomme. Ich lege die Datei unter /root ab und binde sie in den Scripten mit ". ~/myconfig" ein.


    So habe ich die Übersicht und kann zentral Variablen bequem ändern.


    Gibt es Einwände? :-/

    Viele Grüße,

    Peter

    Edited once, last by Peter0311 ().

  • Ja gibt es. Es gibt keine Ideallösung, und mehrere dafür vorgesehene Verzeichnisse, und es gibt auch falsch Lösungen. „Ich mache alles als root“ ist halt immer falsch.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Ich lege die Datei unter /root ab und binde sie in den Scripten mit ". ~/myconfig" ein.

    Die User haben doch gar keinen Zugriff auf /root.

    Mach das doch als User pi. Leg eine Datei in /home/pi/.config/myconfig an.


    Code
    echo 'PATH=$PATH:~/.config:~/.local/bin' >> ~/.profile
    echo "foo=bar" > ~/.config/myconfig
    mkdir -p ~/.local/bin
    echo -e '#!/bin/bash\nsource myconfig\necho $foo' > ~/.local/bin/info_info
    chmod +x ~/.local/bin/info_info


    Dann einmal ausloggen und wieder einloggen.

    Der Befehl info_info sollte dann bar ausgeben.

    Edited once, last by DeaD_EyE: info umbenannt nach info_info um info nicht zu überlagern. ().

  • Es ist allerdings vielleicht ein bisschen ungeschickt, das doch ganz hilfreiche Linux-Kommando

    info auf diese Weise lahmzulegen (zu überblenden). ;)


    Standardmäßig und automatisch ist nämlich ~/.local/bin am Anfang der PATH-Variable.

  • „Ich mache alles als root“ ist halt immer falsch.

    Grundsätzlich bin ich da ganz bei dir. Beim NAS, sowie dem PC beherzige ich das auch.


    Hier ist es aber so, dass ausschließlich ich über SSH und nur im eigenen Netzwerk Zugriff auf den Pi haben, sowie manche Scripte Rootzugriff brauchen (z.B. ein Sicherungsscript). Es "arbeitet" auch niemand auf dem Raspberry, sprich der soll nur seine Scripte immer wieder abarbeiten.

    Und daher mache ich da eine Ausnahme.

    Die User haben doch gar keinen Zugriff auf /root.

    Ich habe keine User auf dem Raspberry (außer pi, der nichts tut). Alle Scripte liegen im root-Ordner, alle Scripte laufen als root und haben somit auch Zugriff auf /root.

    Viele Grüße,

    Peter

  • Alle Scripte liegen im root-Ordner, alle Scripte laufen als root und haben somit auch Zugriff auf /root.


    Ja.. hm. Kommt mir bekannt vor. So eine Sünde habe ich auch begannen und das Problem ist, dass das auf c.a. 400 Geräten läuft.
    Das zu ändern, ist im Nachhinein nicht mehr so einfach.

  • Es geht natürlich wie Du es beschreibst. Aber es ist unsauber. Wenn es nur der User Pi ist der die Scripte nutzt Stelle alles in /home/pi/bin und die Konfig in /home/pi 😉

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy: