msys2 在 Windows 10 上非常慢

msys2 在 Windows 10 上非常慢

which命令从来都不是特别快,但自从我换到 Windows 10 后,它就变得非常慢。我.zshrc随身携带一个通用程序,因此它会在配置某些程序之前测试它们是否可用。前几次调用需要 10 秒以上。

which我使用的是内置的zsh 。这可能有所作为,尽管定义which() { /usr/bin/which "%@" }似乎并没有改善任何事情。

注意:我没有安装任何网络驱动器。

答案1

考虑到您在这种情况下所做的事情,一种解决方法和更好的方法是完全避免使用which,如下所示:

if (( $+commands[foobar] ))
  # configure foobar
fi

它是如何工作的?

zshexpn(1)

${+名称}

如果名称是设置参数的名称,则替换为“1”,否则替换为“0”。

$commands是一个关联数组,由(也是hash内置的)由命令名称作为键,及其关联路径作为值组成。

因此,使用哈希表${+name}上的扩展$commands,按您想要测试其存在的命令进行索引,可以为您提供一种廉价而快速的方法来进行检查。

最后,该(( expr ))构造是一个算术评估,因为${+name}扩展返回 0 或 1。

相关内容