Gleiche .bashrc für Administrator und alle Benutzer (Mini Tipp)

  • Vorab: Auf die Dateien .inputrc, .bash_profile und .profiles gehe ich hier absichtlich nicht ein,

    das würde etwas den Rahmen sprengen. :S

    Hallo,

    wer viel auf der Shell zu tun hat, baut sich mit der Zeit eigene Aliase, Farben, Funktionen, Optionen und Wrapper.

    Diese werden dann in der bashrc hinterlegt. Auch der PROMPT und die Farben werden gerne den Bedürfnissen angepasst.

    Es kommt also einiges zusammen, was dann in der jeweiligen bashrc im eigenen /HOME/ Ordner schlummert.

    Linux erstellt aber für Jeden angelegten Benutzer eine eigene bashrc in Form einer kopie der Standard Datei.

    Diese liegt meist in /etc/bashrc oder /etc/bash/bashrc oder /etc/skel/bashrc (abhängig von der Distribution)

    Auch der Superuser /root/ hat eine Eigene bashrc.

    Meldet man sich also als anderer Benutzer an oder wechselt zum Superuser, sind die müssig eingetragenen

    Aliase, Funktionen, Optionen und Wrapper nicht nutzbar, weil eine andere bashrc für die Sitzung geladen wird.

    Das gleiche Prinzip gilt u.A. auch für andere Shell's wie z.B. zsh, fish, dash, yash, etc.

    Beispiel einer bashrc von Linux MINT

    Um hier jetzt Abhilfe zu schaffen, gibt es viele Wege. Man kann mit Symlinks arbeiten, oder direkt die Standard bashrc Datei editieren. Wobei hier evtl. bei einem Update von der bash wieder alles auf Null gesetzt werden könnte. Für jeden Benutzer oder auch noch den

    Superuser jedes mal diese Datei anzupassen, wenn man mal ein Alias hinzufügen möchte kommt aber nicht in Frage. Vor allem,

    wenn alles in einer Datei steht, wird es schnell unübersichtlich und man muss die Zeilen erstmal finden.

    Kurzer Hinweis:

    :!:An Eurem System seid Ihr selber Verantwortlich!

    :!:Macht Euch eine Sicherungskopie von wichtigen Dateien!

    Für mich habe ich im laufe der Zeit folgende Lösung gefunden. Die Funktion "Include"

    Damit kann man weitere Dateien und somit weitere Parameter in jede bashrc einbinden.

    Wegen der Übersicht habe ich für Aliase, Farben, Funktionen, Optionen und Wrapper jeweils eine Datei im Ordner

    meines Hauptbenutzers angelegt. Kommt etwas dazu, oder wird etwas geändert, öffnet man nur die dafür vorgesehene Datei

    und dank der "Include" Funktion ist es sofort überall nutzbar.

    Für ausgelagerte Aliase sieht ein Eintrag oft so aus:

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

    Wenn man die Dateien selber erstellt hat und sie existieren, kann man die if Abfrage auch weglassen.

    Der Punkt gefolgt von einem Leerzeichen lädt die erwähnte Datei dann einfach mit.

    Für root und andere Benutzer muss natürlich der Pfad angepasst werden.

    Bei mir stehen nur die Anfangsbuchstaben mit im Dateinamen.

    a = Aliases

    c = Colors

    f = Functions

    o = Options

    w = Wrapper

    Farben für Schrift und Hintergrund sind in bash_c definiert und werden von der bashrc gleich mit geladen und

    können von anderen Befehlen genutzt werden. Auch der PROMPT nutzt die Bezeichnungen dieser Tabelle:

    Auch Lokale und Globale Variablen lassen sich so schnell editieren.

    Innerhalb dieser Dateien kann man dann auch mittels if & else z.B. Funktionen oder Variablen für den

    gerade angemeldeten Benutzer verändern oder sperren. Ist man Benutzer ist der Editor Nano, für den Admin

    ist es dann Vi. Auch die jeweils angelegte Historie könnte man "umleiten" um als Admin zu sehen, was ein Benutzer

    auf der Shell eingegeben hat.

    Die Möglichkeiten sind also sehr vielseitig. Euch fällt da bestimmt noch mehr ein. :)

    Viel Spass beim selber ausprobieren - aber wie immer, nix kaputt machen ;)

    Spoiler anzeigen

  • A.E. 18. September 2023 um 22:06

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Und das Prompt auch gleich anpassen ;) :

    Code
    export PS1="\[\e[1;34m\] 🐢 \u\[\e[m\]\[\e[35m\]@\[\e[m\]\[\e[1;32m\]\h\[\e[m\] \[\e[33m\]\W\[\e[m\] : "

    Hatte ich mir auch eingefügt da ich es niedlich fand :) bin aber nun über fancy linux prompt gestolpert oder wenn es direkt aus den Paketquellen sein soll powerline

    Mal meine .bashrc

  • Bin heute auch noch über https://starship.rs/ gestolpert und habe es auch mal getestet unter Mint oder Ubuntu kann man es als snap installieren

    Code
    sudo snap install starship --edge

    und mit

    Zitat
    Code
    eval "$(starship init bash)"

    in die .bashrc einbinden. Ich werde aber bei der normalen powerline aus den mint repo bleiben finde ich am schönsten.

  • Habe noch einen brauchbaren ls alias

    Code
    alias llh='ls -ad --group-directories-first -F --color=always .* | GREP_COLOR="1;32" grep -n ".*"' # hiden files

    Hierbei werden nur die versteckten Dateien und Ordner schön sortiert und farbig ausgegeben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!