fish - Ever since I’ve made the switch to Linux, the terminal has been part of the experience. And, honestly, I wouldn’t want it any other way. Besides its efficiency, I also very much enjoy how it automatically keeps track of everything I do within. I don’t get that functionality whenever I do something within a GUI. But bash left a lot to be desired in that regard; its history simply didn’t record everything. It was also pretty bare-bones; no syntax highlighting, no auto suggestions etc. Thus, after trying to bend bash (and later zsh) to my will and ultimately being dissatisfied with the janky mess I was left with, I finally gave in to at least give fish a honest try. The rest is history. Heck, fish is the very first thing I install on a machine.
fish shell

A smart and user-friendly command line shell

I saw fish recommended for new users in openSUSE’s documentation. I want to try that. There is a way to switch to Bash for a particular script, right? I know that file-based scripts have the shebang line, so that’s a non-issue, but what if I have a Bash command I copied from the Internet and my default shell is fish?
Just prepend the command with “bash”. If the script changes environment variables and you need that to happen in your fish environment there is github.com/edc/bass
GitHub - edc/bass: Make Bash utilities usable in Fish shell

Make Bash utilities usable in Fish shell. Contribute to edc/bass development by creating an account on GitHub.

GitHub
Thanks. So I guess if Bash is my default shell then fish <command> also works by analogy.

As I suppose the other user already went over your main query, I’ll instead focus on what might have felt rather innocuous.

my default shell is fish

I subscribe to the school of thought that one should not change their default shell^[I suppose it could be fine~ish as long as it’s POSIX compliant AND compatible with bash. Which, unfortunately, fish happens to be neither of the two.] through invoking chsh (or whatever other method that applies changes to /etc/passwd). This article does an excellent job at laying down the reasoning (and the recommended alternative). FWIW, the alternative’s day-to-day experience provides all of the pros without any of the cons.

Don’t change your login shell, use a modern terminal emulator

chsh is a small tool that lets you change the default shell for your current user. In order to let any user change their own shell, which is set in /etc/passwd, it needs privileges and is generally setuid root. I am of the opinion that setuid/setgid binaries are a UNIX legacy that should be deprecated. I will explain the security reasons behind that statement in a future post. In this “UNIX legacy” series of posts, I am looking at classic setuid binaries and try to find better, safer alternatives for common use cases. In this post, we will look at alternatives to changing your login shell.

Siosm's blog

yeah Fish along with DOOM Emacs are the first two things I install on my machine.

I used to use zsh with oh my zsh and various plugins and it would totally slow down my nixos system so then I decided to give fish a try and surprise surprise it had all the stuff I had to add on to zsh already baked in.

easily the best shell out there.

fish

“Watch out, Netscape Navigator 4.0!”

I’m sold.

But bash left a lot to be desired in that regard; its history simply didn’t record everything.

Bash doesn’t merge history from multiple bash instances into your ~/.bash_history by default. If you want that to persist:

unix.stackexchange.com/…/preserve-bash-history-in…

Add the following to your ~/.bashrc:

# When the shell exits, append to the history file instead of overwriting it shopt -s histappend
Preserve bash history in multiple terminal windows

I consistently have more than one terminal open. Anywhere from two to ten, doing various bits and bobs. Now let's say I restart and open up another set of terminals. Some remember certain things, s...

Unix & Linux Stack Exchange

Thank you for that! IIRC, it was one of the settings I took from bash-sensible. I can say that it definitely improved after just a couple of changes to ~/.bashrc. Add in ble.sh and it suddenly seemed somewhat modern instead of archaic.

Unfortunately, I don’t remember exactly what broke the camel’s back. However, FWIW, contrary to how I recall my experiences with bash and zsh, I don’t feel any frustration while using using fish. So it’s definitely doing something for me 😉.

GitHub - mrzool/bash-sensible: An attempt at saner Bash defaults

An attempt at saner Bash defaults. Contribute to mrzool/bash-sensible development by creating an account on GitHub.

GitHub