Unixery & daemon worship 🔥


It's a Unix system! I know this!

Fish Shell automatisch im Terminal-Emulator starten

Wenn man die Standard-Shell eines Nutzers ändert, kann man Probleme bekommen, weil die (Bash)-Skripte in /etc/profile.d/ nicht mehr ausgeführt werden. Typischerweise fehlen dann irgendwelche Environment-Variablen oder die PATH-Variable wird nicht richtig gesetzt. Möchte man trotzdem nicht immer eine andere Shell per Hand starten, kann man das bei Benutzung eines Terminal Emulators auch automatisch erledigen lassen. Ist die Standard-Shell (wie bei den meisten Linux-Distributionen üblich) die Bash, dann kann man folgendes in der .bashrc eintragen:

# start fish?
PARENT=$(basename "$(ps --no-header --pid=$PPID --format=cmd)" | sed 's/\ .*//')
if [[ $PARENT == "qterminal" ]] || [[ $PARENT == "terminology" ]] || [[ $PARENT == "konsole" ]] || [[ $PARENT == "alacritty" ]]; then
	exec fish
fi

Dabei wird die Fish-Shell gestartet, wenn der Elternprozess qterminal, terminology, konsole oder alacritty ist. Startet man also einen der genannten Terminal-Emulatoren, so wird Fish automatisch mit gestartet.