这发生在许多系统上,我希望有人有一个解决方案。
路径环境变量是安全问题的一个主要部分。为了理智起见,.zshrc的路径部分如下所示:
# Set Path
PATH_RUBY="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3..0/bin"
PATH_TREESITTER="$HOME/p/na/ts/tree_sitter_na/node_modules/.bin"
PATH_CONDA="/usr/local/anaconda3/bin"
PATH_CARGO=".cargo/bin"
PATH_TEX="/usr/texbin:/opt/X11/bin"
PATH_HOME="$HOME/bin:$HOME"
PATH_OSX="/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library
/Apple/usr/bin"
export PATH="$PATH_RUBY:$PATH_CONDA:$PATH_TREESITTER:$PATH_CARGO:$PATH_TEX:$PATH_HOME:$PATH_OSX"虽然我可以检查路径咀嚼以确保路径中没有完整的目录被重复,但是是否有人写了一个函数来列出冲突呢?我试图防止一些未经检查的工具安装,比如TreeSitter,它有自己的ssh命令,它将执行,而不是后面的/usr/bin/ssh。这个工具既可以增加安全性,也可以解决糟糕的安装问题。
也就是说,我想要一个这样的工具:
$ checkpath
.../p/na/tree_sitter_na/node_modules/.bin/ssh occudes /usr/bin/ssh
$发布于 2023-04-14 06:15:39
在zsh中,type -a将列出PATH中出现的所有命令。列表中的第一个是“活动”匹配:
> type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
> cp /bin/ls ~/bin
> type -a ls
ls is /bin/ls
ls is /Users/gairfowl/bin更多信息,这里。
zsh中有一些非常有用的特性来帮助操作路径。使用“绑定”变量,可以通过PATH标量或path数组引用可执行搜索路径:
> print $PATH
/usr/bin:/bin
> path+=/sbin
> print $PATH
/usr/bin:/bin:/sbin
> print -l $path
/usr/bin
/bin
/sbin默认情况下,PATH和path是以这种方式设置的。其他变量可以配置为绑定变量,例如typeset -T LD_LIBRARY_PATH ld_library_path。
-U选项typeset可用于设置变量,使其不包含重复项:
> print $PATH
/usr/bin:/bin
> path+=/sbin
> path+=/sbin
> print $PATH
/usr/bin:/bin:/sbin:/sbin
> typeset -U PATH path
> print $PATH
/usr/bin:/bin:/sbin您还可能希望查看:a 膨胀改性剂,以从相对路径获取绝对路径。
https://serverfault.com/questions/1128391
复制相似问题