
某些應用程式告訴我要為 PATH 環境變數添加一些內容,我知道一種方法是在 處建立一個文件~/.zshrc
,但我想知道變數PATH=...
儲存的文件在哪裡?
當我輸入時echo $PATH
我得到:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Xamarin Workbooks.app/Contents/SharedSupport/path-bin
從文件中/etc/paths
我得到:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
那麼哪個文件附加了附加路徑呢?
回覆評論:
我得到:(請原諒我將用戶名更改為alice
)
grep: /Users/alice/.profile: No such file or directory
grep: /etc/environment: No such file or directory
grep: /etc/zsh/zprofile: No such file or directory
grep: /Users/alice/.zshrc: No such file or directory
grep: /Users/alice/.profile: No such file or directory
答案1
正如你所說自己的自我回答,您不需要知道PATH
變數最初填滿的位置。
PATH
您可以輕鬆地在末尾或開頭新增路徑,並且zsh
還可以輕鬆刪除重複項。
您可以透過使用首先使PATH
變數和關聯的數組唯一path
typeset -U -g PATH path
然後變數將停留由於該命令而獨一無二。
要新增幾個路徑:
path=( /new/path1 /new/path2 $path )
要附加幾個路徑:
path=( $path /new/path1 /new/path2 )
或者,
path+=( /new/path1 /new/path2 )
變數PATH
的值將會相應更新。
您可能想要在您的檔案中執行此操作,該檔案由任何登入 shell$ZDOTDIR/.zprofile
自動取得。zsh
在您的文件中執行此操作$ZDOTDIR/.zshenv
是不必要的,因為該文件的來源是任何類型調用zsh
(因此,如果需要的話,應該保持非常簡短;ZDOTDIR=$HOME/.zsh
例如,我只是在那裡設置)。
請注意,它PATH
已經是一個環境變量,因此再次導出它沒有任何意義。
答案2
該文件/etc/zprofile
用於/usr/libexec/path_helper
設定預設值PATH
,我們沒有它的原始碼。
下面展示如何根據使用者的情況進行修改PATH
:
建立/編輯~/.zprofile
並新增以下內容:
# append to PATH
export PATH="$PATH:.../to/target/bin"
# prepend to PATH
export PATH=".../to/target/bin:$PATH"
# remove duplicate in PATH
typeset -U PATH
答案3
以下步驟向您展示如何進行系統方面的修改PATH
:
使用命名約定建立一個檔案:priority-appname(例如'20200418-vscode',我只是使用日期來使優先權唯一)然後將要新增到的路徑儲存
PATH
在其中。將該文件移至
/etc/paths.d/
,完成。
注意事項1:請記住建立一個新的終端會話以查看echo $PATH
.
注意2:僅此方法追加你的路徑PATH
。