Nii*_*ing 5 zsh path environment-variables macos
一些应用程序告诉我向 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
Run Code Online (Sandbox Code Playgroud)
从/etc/paths
我得到的文件中:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)
那么哪个文件附加了额外的路径?
回复评论:
我得到了:(原谅我把用户名改成了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
Run Code Online (Sandbox Code Playgroud)
正如您在自己的自我回答中所说,您不需要知道PATH
变量最初填充的位置。
PATH
您可以轻松地在末尾或开头添加新路径,并且zsh
还可以方便地删除重复项。
您可以首先使用以下方法使PATH
变量和关联的数组唯一path
typeset -U -g PATH path
Run Code Online (Sandbox Code Playgroud)
然后,变量将通过此命令保持唯一。
要添加几个路径:
path=( /new/path1 /new/path2 $path )
Run Code Online (Sandbox Code Playgroud)
要附加几个路径:
path=( $path /new/path1 /new/path2 )
Run Code Online (Sandbox Code Playgroud)
或者,
path+=( /new/path1 /new/path2 )
Run Code Online (Sandbox Code Playgroud)
变量PATH
的值将相应更新。
您可能想在您的文件中执行此操作$ZDOTDIR/.zprofile
,该文件由任何zsh
登录 shell 自动获取。在您的文件中执行此操作$ZDOTDIR/.zshenv
是不必要的,因为该文件是由任何类型的zsh
调用获取的(因此,如果需要的话,应该保持非常短;ZDOTDIR=$HOME/.zsh
例如,我只是在那里设置)。
请注意,它PATH
已经是一个环境变量,因此再次导出它没有任何意义。