Fish shell notes

I recently (2017) switch to fish shell as my interactive shell. There is a few reason for it:

At the begining, I used oh-my-fish as a simple way in.

Oh My Fish provides core infrastructure to allow you to install packages which extend or modify the look of your shell. It’s fast, extensible and easy to use.

oh-my-fish is pretty cool but I tend to use only a few plugin and I almost have more hand-written configuration files for fish than what oh-my-fish gives me. So I’m now using fish shell bare-naked with my own configurations.

According to the documentation, fish will load files from the following folder (in order):

Fish will also automatically loads functions from the following folder (in order):

An autoloaded function becomes available automatically to all running shells. If the function definition is changed, all running shells will automatically reload the altered version. Startup time and memory usage is improved, etc.

I’m also using nixos which have some specificities but we’ll see that later. One specificity though about my setup is the, I may want some fish function/helper to be available for all users on a server (when using nixos) or only a user (mainly, when using nixpkgs without nixos, on Mac OSX or another linux or on Windows with WSL).