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?

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