Making fish your default login shell will mean the SHELL
env var will be set to fish. Many programs (e.g., vim, tmux) use that as the shell to use to execute shell commands unless you explicitly configure them to use another shell (e.g., /bin/sh). Because those shell commands have a high likelihood of containing POSIX shell syntax the commands won't be executed correctly by fish. This means you are more likely to experience seemingly random, frustrating, problems.
You can set fish as your default login shell. I do so on my two main computers. But I'm an experienced UNIX user who is aware of the potential problems this can cause. I also know how to work around them. For example, by adding set shell=/bin/sh
to my vimrc config file. If you're inexperienced or just don't want to have to deal with the extra configuration that will be required it is best to leave your login shell set to bash or some other POSIX shell. Then launch fish from that shell when in interactive mode. This is also safer because you are more likely to screw up your fish config in a manner that makes it impossible to start an interactive fish session. If you've made fish your default login shell you'll then be unable to log in.
Bottom line is that if you are an inexperienced UNIX CLI user or new to fish don't set it as your default shell. If you're an experienced UNIX CLI user and have been using fish for a few weeks and are confident you can correctly configure it feel free to make it your default shell.
/usr
and/or having library dependencies there (which is relevant to split-/usr systems). Besides that, root's login shell isn't used by the system at all – as long as/bin/sh
itself is unaltered, it should be fine.