[英]How to permanently set env across every session in fish shell?
我安裝cargo
建築環境。 我使用cargo install exa
安裝exa
(命令ls
的替代品)。 可執行文件放在$HOME/.cargo/bin
中。 我使用fish
shell set -gx PATH $PATH $HOME/.cargo/bin
,然后我可以在當前 session 上使用命令exa
。
但是當我打開一個新的 session 時,除非再次set -gx...
,否則我無法執行exa
。
我查看選項gx
:
--global -g (Make variable scope global)
--export -x (Export variable to subprocess)
全球不是意味着每個 session 嗎? 有人可以幫我嗎?
全球不是意味着每個 session 嗎?
它沒有。 它是“全球”而不是“本地”。 從魚文檔:
全局變量特定於當前魚 session,除非使用 set -e 明確請求,否則永遠不會被刪除。
通常,您只需將set -gx
放入 ~/.config/fish/config.fish 即可。 那是fish的配置文件。
Fish 也有“通用”變量,它們被持久存儲,但它們與導出的交互很尷尬,所以我不推薦它。
特別是對於 $PATH,fish 提供了它自動添加的fish_user_paths
變量,因此您可以運行
set -U fish_user_paths $fish_user_paths $HOME/.cargo/bin
一次,交互式地,魚會照顧它。 這是一個通用變量,但 fish 會在必要時將其添加到 $PATH(對於每個組件,它會檢查它是否已經存在等)。 不要把它放在 config.fish 中,否則每次啟動一條魚時它都會添加一個 $HOME/.cargo/bin,因此它會使變量膨脹。
回顧一下:
set
語句放入 config.fish
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.