我想在 fish 启动时将 ./bin 目录(相对于当前 shell 目录)添加到 $PATH 。请注意 fish
是一个 shell 。
echo $PATH
set PATH ./bin $PATH
echo $PATH
如果我将这些行放在
~/.config/fish/config.fish
内shell 将回显相同的路径集合。绝对路径已正确添加。如果我打开 shell 并输入相同的
set PATH ./bin $PATH
在一些包含 bin
的目录中它添加成功。但是当没有 bin
时在当前目录中,它向我显示了一个错误。set: Could not add component ./bin to PATH.
set: Value too large to be stored in data type
我在 OS X Lion 上运行 fish 1.23.1。
最佳答案
我找到的最好方法 持续添加路径到您的 $PATH
是
set -U fish_user_paths $fish_user_paths ~/path/name
这前置于
$PATH
.并且由于它是持久的,所以路径停留在 $PATH
在 shell 重新启动时。这比在您的
config.fish
中放置命令更有效修改您的 $PATH
,因为与每次 shell 重新启动时运行相比,它只运行一次。变量
fish_user_paths
is intended to be set by the user 1,如 ridiculousfish 所述, fish 的维护者。为方便起见,考虑创建一个fish函数:2
# ~/.config/fish/functions/add_to_path.fish
function add_to_path --description 'Persistently prepends paths to your PATH'
set --universal fish_user_paths $fish_user_paths $argv
end
并将其用作:
$ add_to_path foo bar # Adds foo/ and bar/ to your PATH
笔记
set -U fish_user_paths ~/bin
.这会覆盖 fish_user_paths
单个值为 ~/bin
.避免丢失 fish_user_paths
中设置的现有路径,请务必包含 $fish_user_paths
除了添加的任何新路径(如我的回答所示)。 关于macos - 在 fish 启动时添加到 $PATH 的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064053/