簡體   English   中英

如何在魚 shell 中的每個 session 中永久設置 env?

[英]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
  • 對於通用變量,手動執行
  • 對於 $PATH,使用 $fish_user_paths 進行自定義

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM