bashrc anpassen: Aliase, Funktionen und Bash-Prompt
Die .bashrc anpassen und neu laden: nützliche Aliase, eigene Funktionen, Systeminfos beim Start und ein Bash-Prompt mit Git-Branch-Anzeige.
Das Anpassen Deiner .bashrc-Datei kann Deinen Linux Alltag erheblich verbessern!
Die .bashrc ist eine Standarddatei, die sich in DeinemLinux-Home-Verzeichnis befindet. Die wichtigsten Vorteile der Konfiguration der .bashrc-Datei sind:
- Das Hinzufügen von Aliasen ermöglicht es Dir, Befehle einfacher einzugeben
- Das Hinzufügen von Funktionen ermöglicht es Dir, Code auszuführen
- Sie zeigt nützliche Systeminformationen an. z.B. beim Systemstart.
- Sie passt die Bash-Eingabeaufforderung an.
Bearbeite Deine .bashrc Datei indem DU folgendes eingibst:
nano ~/.bashrc
Aber Achtung: die .bashrc wird NUR beim Start einer shell aufgerufen. Die hier beschriebenen Vorschläge funktionieren erst dann, wenn Du dich nochmal neu einloggst — oder Du lädst die bashrc in der laufenden Shell neu, wie ich es gleich zeige.
.bashrc neu laden
Nach dem Speichern passiert erst einmal nichts. Bash liest die Datei nur beim Start einer Shell ein, Deine neuen Aliase gelten also zunächst nur in Fenstern, die Du danach aufmachst. Statt Dich neu einzuloggen, lädst Du die bashrc einfach in der aktuellen Shell neu:
source ~/.bashrc
Kürzer geht es mit dem Punkt-Befehl, der genau dasselbe macht:
. ~/.bashrc
Beides führt die Datei in der laufenden Shell aus. Deshalb der Hinweis: Zeilen, die etwas an den PATH anhängen, werden dabei ein zweites Mal ausgeführt und der Eintrag steht danach doppelt drin. Das stört meist nicht, bei einem ganz sauberen Zustand hilft ein neues Terminal.
bashrc, bash_profile oder profile — was wird wann gelesen?
Die Aufteilung sorgt regelmäßig für Verwirrung. So sieht sie aus:
~/.bashrcwird bei jeder interaktiven Nicht-Login-Shell gelesen. Das ist der Normalfall: ein neues Terminalfenster auf dem Desktop, ein weiterer Tab, eine Subshell. Hier gehören Aliase, Funktionen und der Prompt hinein.~/.bash_profile(ersatzweise~/.bash_loginoder~/.profile) wird bei Login-Shells gelesen, also bei der Anmeldung an der Konsole und bei einer SSH-Sitzung. Hierher gehören Umgebungsvariablen wiePATHoderEDITOR. Bash liest von den dreien nur die erste vorhandene Datei./etc/bash.bashrcund/etc/profilesind die systemweiten Gegenstücke, die für alle Benutzer gelten. Änderungen dort brauchen root-Rechte.
Weil eine SSH-Sitzung eine Login-Shell startet, wird ~/.bashrc dabei nicht automatisch gelesen. Auf Ubuntu und Debian ist das schon gelöst: Die mitgelieferte ~/.profile enthält eine Weiche, die die bashrc nachlädt. Fehlt sie auf Deinem System, hängst Du sie selbst in die ~/.bash_profile:
[ -f ~/.bashrc ] && . ~/.bashrc
Die bashrc auf Syntaxfehler prüfen
Ein Tippfehler in der bashrc ist unangenehm, weil er jede neu geöffnete Shell begrüßt — im schlimmsten Fall bricht der Start ab und Du landest in einer kaputten Umgebung. Deshalb prüfe ich die Datei nach jeder Änderung, bevor ich sie neu lade:
bash -n ~/.bashrc
Kommt keine Ausgabe, ist die Syntax in Ordnung. bash -n liest die Datei nur ein und führt sie nicht aus. Hast Du Dich doch ausgesperrt, hilft bash --norc: Damit startest Du eine Shell ganz ohne bashrc und kannst die Datei in Ruhe reparieren.
Aliases
Die Zeilen, die mit # beginnen, sind übrigens Kommentare in Bash und werden beim Ausführen ignoriert.
# Git Status anzeigen
alias gs='git status'
# Alle Änderungen zu Git hinzufügen.
alias gaa='git add --all'
# Alle Änderungen hinzufügen. Dann alles Committen. Dann alles Pushen.
alias pushall='git add --all; git commit -m "pushall"; git push'
# Eine Ebene in der Ordnerstruktur runter.
alias ..='cd ..;pwd'
Funktionen
FInde die größte Dateien:
function largest_files() {
du -h -x -s -- * | sort -r -h | head -20;
}
Gibst Du nun (nachdem Du Dich neu eingeloggt hast) largest_files ein, siehst Du die größten 20 Dateien oder Verzeichnisse in Deinem Verzeichnis. Wenn Du gezielt große Dateien finden willst, gibt es dafür eigene Befehle.
Zeig das Wetter
Indem DU in Deiner Shell einfach wetter eingibst hast Du Deine eigene Wettervorhersage
Hier musst Du Dir noch deinen eigenen GRATIS Key auf api.openweathermap.org besorgen.
function wetter() {
local response=$(curl --silent 'https://api.openweathermap.org/data/2.5/weather?q=Voitsberg&units=metric&lang=de&appid=DEIN_APIKEY')
local status=$(echo $response | jq -r '.cod')
case $status in
200) printf "Ort: %s %s\n" "$(echo $response | jq '.name') $(echo $response | jq '.sys.country')"
printf "Forecast: %s\n" "$(echo $response | jq '.weather[].description')"
printf "Temperatur: %s°C\n" "$(echo $response | jq '.main.temp')"
printf " Min: %s°C\n" "$(echo $response | jq '.main.temp_min')"
printf " Max: %s°C\n" "$(echo $response | jq '.main.temp_max')"
;;
401) echo "401 error"
;;
*) echo "error"
;;
esac
}
Systeminfos beim Systemstart
Beim Sysstemstart kannst Du immer aktuelle Infos anzeigen indem DU folgendes ans Ende Deiner .bashrc Datei anhängst:
printf "\n"
printf "Noch einige Infos vor dem Start:\n"
printf "\n"
printf " %s\n" "IP ADDR: $(curl ifconfig.me)"
printf " %s\n" "BENUTZER: $(echo $USER)"
printf " %s\n" "DATUM: $(date)"
printf " %s\n" "UPTIME: $(uptime -p)"
printf " %s\n" "HOSTNAME: $(hostname -f)"
printf " %s\n" "KERNEL: $(uname -rms)"
printf " %s\n" "SPEICHER: $(free -m -h | awk '/Mem/{print $3"/"$2}')"
printf "\n"
Bashprompt anpassen
Wenn Du folgende Funktion in Dein .bashrc einfügst und im Bashprompt git_branch ausführst, dann wird in Verzeichnissen mit GIT auch der aktuelle Branch angezeigt. Die Funktion filtert die Ausgabe mit awk über ein Muster — falls Dir solche Ausdrücke noch fremd sind, hilft Dir mein regex Cheat-Sheet weiter. Und wenn Du Deine Skripte später durchsuchen willst, zeige ich Dir, wie Du Text in Dateien suchen kannst.
function git_branch() {
if [ -d .git ] ; then
printf "%s " "($(git branch 2> /dev/null | awk '/\*/{print $2}'))";
fi
}
function bash_prompt(){
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}$(git_branch)\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}$(git_branch)\u@\h:\w\$ '
fi
}Mehr aus „Linux, DevOps & Systeme"
Docker Speicherplatz freigeben
Docker Speicherplatz freigeben: mit docker system df die Belegung sehen und mit prune ungenutzte Images, Container, Volumes und Build-Cache löschen.
WeiterlesenWindows Core Prozesse verstehen
Windows Core-Prozesse verstehen: was smss.exe, csrss.exe, lsass.exe und svchost.exe wirklich tun und woran Du getarnte Malware im Prozessbaum erkennst.
WeiterlesenUbuntu LTS Release Update
Ubuntu LTS sicher aktualisieren: Snapshot bei Contabo oder Netcup anlegen, mit apt update und do-release-upgrade hochziehen und den SSH-Port bestätigen.
WeiterlesenÜber diesen Blog
Ein Sammelsurium an Denkanstößen.
Hier sammle ich Wissen, Argumente und Links zu allem, was mich beschäftigt — von Technik über Küche bis Nachhaltigkeit. Beruflich berate ich zu Cybersecurity.