I've been playing around with the fish shell for a few days and I like it. In order to start fish in a terminal via a quicklauncher or menu, I'm using a script like this:1
#!/bin/sh
export SHELL=/bin/fish
exec konsole # <- KDE's terminal emulator
If I run this script from the command-line, it does what's expected: starts a konsole whose shell is fish.
But run from a KDE launcher, $SHELL has been reset and I get /bin/bash. What's more, if I replace konsole with Terminal (from XFCE), it doesn't work even from the command-line; the terminal starts up with $SHELL reset. So it appears that:
- XFCE's
Terminalwill reset$SHELLno matter what. - KDE's
konsolewill not reset$SHELLwhen started from the command-line. - KDE will reset
$SHELLwhen an application is started via a launcher.
If I change the default shell in /etc/passwd, every works. That's fine, except there are a few users (I use more than one) I would prefer not to do this with, but I still want to quicklaunch a terminal to use fish.
Note that there are no profile, etc. files anywhere on the system that set SHELL. There's just the default in /etc/passwd. Also, this is not just an issue under KDE (it also happens via fvwm). I've grepped through the KDE and XFCE conf directories too.
I realize this is probably just life, but I'm wondering if there isn't something I've missed here, or if anyone knows more specifically why this would happen.
1. In fact that's an SSCCE -- the reason this is irritating is I like to start a terminal with two tabs open running mc, meaning the work-around is more than just typing fish. This is also why I can't use a -e type switch to the terminal command; that's what's starting mc, which uses a subshell based on $SHELL.