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.