Änderungen der .bashrc wird seit Bookworm ignoriert

  • Hallo,

    alle meine Raspis laufen noch unter Bullseye, weshalb mir Erfahrungen mit Bookworm fehlen. Auf einem habe ich das jetzt installiert. Mir ist aufgefallen, dass Änderungen an der ~/.bashrc (Farbe Eingabepromt und Aliases) zwar genutzt werden wenn man

    Code
    source ~/.bashrc

    ausführt, nach einem Logout über SSH aber vergessen werden. Das war bisher (auch auf allen anderen Linux) nicht so. Hat sich da etwas geändert? Das nervt schon gewaltig. Auch scheinen sich die Farbcodierungen bei 'ls' geändert zu habe. Bisher wurden Ordner blau und ausführbare Scripte grün abgegrenzt. Jetzt ist alles einheitlich weiß. Ist das bei anderen auch so?

    Grüße
    Wednesday

  • Änderungen der .bashrc wird seit Bookworm ignoriert? Schau mal ob du hier fündig wirst!

  • In der ~/.bashrc wirst Du eine Abschnitt finden:

    Code
    ...
    # Alias definitions.
    # You may want to put all your additions into a separate file like
    # ~/.bash_aliases, instead of adding them here directly.
    # See /usr/share/doc/bash-doc/examples in the bash-doc package.
    if [ -f ~/.bash_aliases ]; then
       . ~/.bash_aliases
    fi
    ...

    Deine Änderungen solltest Du also in die ~/.bash_aliases schreiben.

  • piselDer Hinweis bezieht sich aber nur auf Alias-Definitionen, nicht auf andere Änderungen/Ergänzungen in der .bashrc. Und wenn die .bashrc nicht ausgeführt wird, dann wird die auch die .bash_aliases nicht ausführen.

    Wednesday Bei mir wird die .bashrc ausgeführt. Und auch der Alias für farbiges ls wird gesetzt wenn ich mich per SSH anmelde:

    Code
    $ alias
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias ls='ls --color=auto'

    Die .bashrc wird von .profile aufgerufen. Ziemlich am Anfang steht:

    Bash: .profile
    # if running bash
    if [ -n "$BASH_VERSION" ]; then
        # include .bashrc if it exists
        if [ -f "$HOME/.bashrc" ]; then
            . "$HOME/.bashrc"
        fi
    fi

    Steht das bei Dir nicht? Was gibt echo "$BASH_VERSION" aus?

    “Pets are always a great help in times of stress.
    And in times of starvation too, o'course.” — Terry Pratchett, Small Gods

  • Bei mir kommt

    Code
    echo "$BASH_VERSION"
    5.2.15(1)-release

    In der .profile steht auch

    Code
    if [ -n "$BASH_VERSION" ]; then
       # include .bashrc if it exists
       if [ -f "$HOME/.bashrc" ]; then
           . "$HOME/.bashrc"
       fi
    fi

    Ich kenne das Verhalten so, dass man die Darstellung des Prompts und die Aliases in die .bashrc eintragen kann und einmalig mit source ~/.bashrc bestätigt. Dann wird das nach jedem Logout/Reboot/Re-Login/was-auch-immer aus der .bashrc geladen. Das geht so bei jeder LTS-Version ab Ubuntu 16.04 auf all meinen Rechner und alle Raspbian-/Raspberry Pi OS-Versionen seit Wheezy.

    Die Frage ist: Ist das ein grds. geändertes Verhalten ab Bookworm?

    In der ~/.bashrc wirst Du eine Abschnitt finden:

    Code
    ...
    # Alias definitions.
    # You may want to put all your additions into a separate file like
    # ~/.bash_aliases, instead of adding them here directly.
    # See /usr/share/doc/bash-doc/examples in the bash-doc package.
    if [ -f ~/.bash_aliases ]; then
       . ~/.bash_aliases
    fi
    ...

    Deine Änderungen solltest Du also in die ~/.bash_aliases schreiben.

    Das steht zumindest unter Xubuntu 24.04 auch in der .bashrc und dennoch funktioniert dort alles wie oben beschrieben.

  • ... , nach einem Logout über SSH aber vergessen werden.

    Was genau meinst Du damit? Nach dem Logout ist Deine bash doch beendet.

    Auch scheinen sich die Farbcodierungen bei 'ls' geändert zu habe. Bisher wurden Ordner blau und ausführbare Scripte grün abgegrenzt.

    Gib doch in der .bashrc folgenden alias ein.

    alias ls='ls --color=auto'

    Dann wird auch alles farbig dargestellt.

    Das steht (bei mir) schon in der Standard-~/.bashrc :

    Code
       alias ls='ls --color=auto'
       alias grep='grep --color=auto'
       alias fgrep='fgrep --color=auto'
       alias egrep='egrep --color=auto'

    Edited once, last by pisel (September 20, 2025 at 8:41 PM).

  • pisel Dass das funktioniert ist nicht die Frage, das gehört da halt nicht rein. Ausserdem hat der OP das Problem das die .bashrc nicht ausgeführt wird, also wird die auch die .bash_aliases nicht ausführen, womit Dein Beitrag noch weniger Sinn macht.

    Wednesday Man bestätigt mit source .bashrc nichts. Das führt einmalig den Inhalt der .bashrc-Datei im Kontext der laufenden Shell aus. Das hat keinen Effekt der ein beenden der laufenden Shell überlebt.

    Es gibt kein geändertes Verhalten bei Bookworm. Da wird beim Login die .profile ausgeführt und die führt, falls $BASH_VERSION einen Inhalt hat, die .bashrc aus. Diese Variable hat bei Dir einen Inhalt, also muss da irgendwas verhindern, dass die .profile und/oder die .bashrc komplett ausgeführt wird.

    “Pets are always a great help in times of stress.
    And in times of starvation too, o'course.” — Terry Pratchett, Small Gods

  • Ich kann mir auf dieses Verhalten auch keinen Reim machen. Hier ist das jedenfalls nicht so.

    Von wo aus und mit welchem Client wird denn SSH zum RPi verwendet? Ist im Raspberry Pi OS ein Autologin eingestellt? Was sagt echo $SHELL ?

    //Edit

    Ist die Änderung mit der neuen SSH-Session durch cat ~/.bashrc noch da?

  • Wednesday
    I.d.R. wird die ~/.bashrc von der ~/.profile gestartet. Hast Du die? Hat Dein Benutzer Leserechte darauf?
    Da sollte der Aufruf der ~/.bashrc drin stehen:

    Code
    ...
    # if running bash
    if [ -n "$BASH_VERSION" ]; then
       # include .bashrc if it exists
       if [ -f "$HOME/.bashrc" ]; then
           . "$HOME/.bashrc"
       fi
    fi
    ...

    Dann könntest Du noch "getent passwd <dein User>" eintippen.
    Im letzten Feld rechts steht die eingestellte Shell für Deinen User. Steht da "/bin/bash"?
    Wenn nicht, dann

    Code
    chsh -s/bin/bash <dein User>

    Edited once, last by pisel (September 21, 2025 at 12:42 AM).

  • Quote

    Was genau meinst Du damit? Nach dem Logout ist Deine bash doch beendet.

    Das ist richtig, aber dennoch sollten Ändeurngen an der .bashrc bei jedem Login Verwendung finden. So kenne ich das bisher bei all meinen Ubuntus und Raspis.

    Quote

    Von wo aus und mit welchem Client wird denn SSH zum RPi verwendet? Ist im Raspberry Pi OS ein Autologin eingestellt? Was sagt echo $SHELL ?

    Ich verbinde mich von einem Ubuntu auf dem Notebook. Client ist halt 'ssh'. Es braucht unter Linux kein Putty oder so.

    Was aber anders ist als zu all meinen Raspis (nicht über zu den Desktop-Linux) ist der Autologin. Alle meine Raspis laufen ohne GUI und ohne Auto-Login in der Konsole.

    Code
    echo $SHELL
    /bin/bash
    Quote

    Ist die Änderung mit der neuen SSH-Session durch cat ~/.bashrc noch da?

    Du meinst ob der Inhalt der Datei gelöscht wird? Nein, die Datei ist unverändert. Was ich da rein schreiben bleibt auch drin, wird nur nicht verarbeitet.

    Quote

    I.d.R. wird die ~/.bashrc von der ~/.profile gestartet. Hast Du die? Hat Dein Benutzer Leserechte darauf?

    Ja, die ist da. Und Leserechte hat er auch:

    Code
    ls -lh .profile
    -rw-r--r-- 1 pi pi 905 20. Sep 16:05 .profile
    Quote

    Da sollte der Aufruf der ~/.bashrc drin stehen:

    Steht so drin.

    Quote

    Dann könntest Du noch "getent passwd <dein User>" eintippen.
    Im letzten Feld rechts steht die eingestellte Shell für Deinen User. Steht da "/bin/bash"?

    Code
    getent passwd pi
    pi:x:1000:1000:,,,:/home/pi:/bin/bash
  • Dann wird es wohl Zeit mal Debugausgaben in die Dateien zu schreiben. Wenn Du in die erste Zeile nach den anfänglichen Kommentaren der .profile mal echo 'This is .profile' schreibst, wird das dann beim Anmelden per SSH ausgegeben?

    “Pets are always a great help in times of stress.
    And in times of starvation too, o'course.” — Terry Pratchett, Small Gods

  • Mir fällt zum Thema "ls ist einfarbig" spontan ein, dass das der Fall ist, wenn man als root bzw. mit sudo arbeitet. Kann es sein, dass der ssh-Login als root läuft? Und wenn, ist das beabsichtigt?

  • Das Problem lag am Ende daran, dass die Einträge in die .bash_profile gemachtgemacht werden mussten. Ob das jetzt mit dem Autostadt zusammen hängt kann ich nicht sagen. Jetzt werden die Einträge bei jedem Start des SSH übernommen.

    Da auch seit dem autostart ls einfarbig ist, würde ich hier das Problem sehen.

  • Das Problem lag am Ende daran, dass die Einträge in die .bash_profile gemachtgemacht werden mussten.

    Wieso denn auf einmal in die .bash_profile? Die taucht in diesem Thread zum ersten Mal auf.

    Ob das jetzt mit dem Autostadt zusammen hängt

    Wolfsburg?

    Wir sind auf dem Weg in ein neues Jahrtausend,
    bald werden Wunder am Fließband hergestellt.
    Auf dem Weg in ein neues Jahrtausend,
    über Nacht wird alles anders,
    eine schöne neue Welt.

  • Wednesday Warum hast Du eine .bash_profile? Wer hat die angelegt? Wenn die existiert, dann wird die .profile nicht ausgeführt (wenn man die Bash als Login-Shell benutzt), aber diese Datei gibt es normalerweise nicht. Ausser man legt die selber an. Und dann schreibt man die Sachen die bei jeder neu gestarteten Shell passieren sollen nicht dort hinein, sondern sourced die .bashrc. Denn die .bash_profile wird nur für Login-Shells ausgeführt.

    “Pets are always a great help in times of stress.
    And in times of starvation too, o'course.” — Terry Pratchett, Small Gods

  • Quote

    Die taucht in diesem Thread zum ersten Mal auf.

    Logisch. Ich wusste ja nicht wo das Problem liegt. Warum soll ichbdir Datei erwähnen, wen ich nicht weiß, dass ich dort etwas eintragen kann oder muss.

    Quote

    Warum hast Du eine .bash_profile?

    Keine Ahnung. Ich bin gerade nicht zu Hause. Dort steht irgendwas mit if und tty drin und dann wird 'startx' ausgeführt. Kann sein das hängt mit dem autologin und dem automatischen Start von openbox zusammen. Ich kann mich nicht erinnern, das selbst eingefügt zu haben.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!