Modifying PATH with fish shell [closed]
As stated in the official fish tutorial, you can modify the $fish_user_paths
universal variable.
Run the following once from the command-line:
set -U fish_user_paths /usr/local/bin $fish_user_paths
This will prepend /usr/local/bin
permanently to your path, and will affect the current session and all future instances too because the -U argument will make the variable universal.
From the fish
documentation:
... (Note: you should NOT add this line to
config.fish
. If you do, the variable will get longer each time you run fish!)fish_user_paths, a list of directories that are prepended to PATH. This can be a universal variable.
As of fish 3.2.0, released in March 2021, the canonical answer is:
fish_add_path /opt/mycoolthing/bin
Existing answer for fish < 3.2.0:
The recommended commands for modifying PATH
from fish's maintainers are:
-
If you want to run the command once:
set -Ua fish_user_paths /path
-
If you want to add a command to a startup script, this is idempotent:
contains /path $fish_user_paths; or set -Ua fish_user_paths /path
Like all shells, fish inherits its PATH from the environment it is started in. How this is set for login shells differs between operating systems - on Linux, for example, /etc/login.defs
controls the initial PATH set for all login shells. I don't know how this is set on OS X.
Next, like bash
or csh
, the initialisation files for the shell may alter the path. For fish on OS X, there is code in share/fish/config.fish
to load paths from the standard OS X path configuration files /etc/paths
and /etc/paths.d/*
. There is alternative code to set a useful path on Solaris.
There is also code to pick up paths from the universal variable $fish_user_paths
, which is the right way to add something to your PATH and have it reflected across all shells.
1. Enumerate user paths:
echo $fish_user_paths | tr " " "\n" | nl
2. Append a new bin path, permanently:
set -ga fish_user_paths my_appended_path
3. Remove 7th bin search path by index: (see #1):
set —eg fish_user_paths[7]