如何在fish shell中的每个会话中永久设置env?

yacmzcpb  于 2023-10-23  发布在  Shell
关注(0)|答案(1)|浏览(116)

安装cargo构建环境。我使用cargo install exa来安装exa(命令ls的替代品)。可执行文件放在$HOME/.cargo/bin中。我使用fish shell set -gx PATH $PATH $HOME/.cargo/bin,然后我可以在当前会话上使用命令exa
但是当我打开一个新的会话时,我不能执行exa,除非再次执行set -gx ...
我在选项gx中查找:

--global  -g     (Make variable scope global)
--export  -x  (Export variable to subprocess)

全球不是指每届会议吗?有人能帮帮我吗?

yvfmudvl

yvfmudvl1#

全球不是指每届会议吗?
它不是。它是“全球”而不是“本地”。鱼的文档:
全局变量特定于当前fish会话,除非使用set -e显式请求,否则永远不会被擦除。
一般来说,您只需要将set -gx放入~/.config/fish/fish.fish。是菲什的配置文件。
Fish也有“通用”变量,它们被持久地存储,但是它们与导出的交互很笨拙,所以我不推荐它。
对于特定的$PATH,fish提供了它自动添加的fish_user_paths变量,因此您可以运行

set -U fish_user_paths $fish_user_paths $HOME/.cargo/bin

一次,交互式的,鱼会照顾它。这是一个通用变量,但fish会在必要时将其添加到$PATH中(对于每个组件,它都会检查它是否已经存在)。不要 * 把它放到www.example.com中config.fish,否则它会在每次启动一条鱼时添加一个$HOME/.cargo/bin,因此它会使变量膨胀。
回顾一下:

  • 对于全局变量,将set语句放入config.fish
  • 对于通用变量,手动执行
  • 对于$PATH,使用$fish_user_paths进行自定义

相关问题