一些应用程序告诉我向 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
。