msys2 `which` очень медленно работает на windows 10

0

which Команда никогда не была особенно быстрой, но, поскольку я перешел на Windows 10, она очень медленная. У меня есть общий .zshrc который я ношу с собой, поэтому он проверяет, доступны ли некоторые программы перед их настройкой. И первые несколько звонков занимают более 10 секунд.

Я использую Zsh, который имеет which встроенный. это может быть иметь значение, хотя определяя which() { /usr/bin/which "%@" } кажется, ничего не улучшает.

Примечание. У меня не подключены сетевые диски.

Jan Hudec
источник

Ответы:

1

Обходной путь и более приятный подход, учитывая, что вы делаете в этом случае, состоит в том, чтобы избегать which целиком вот так:

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

Как это работает?

От zshexpn(1):

$ {Имя} +

Если name является именем набора параметров, подставляется «1», в противном случае «0» подставляется.

$commands это ассоциативный массив, который управляется ЗШ (так же hash встроенный), состоящий из имен команд в качестве ключей и их связанный путь в качестве значения.

Итак, используя ${+name} расширение на $commands хэш-таблица, проиндексированная командой, которую вы хотите проверить на наличие, дает вам дешевый и быстрый способ выполнить эту проверку.

Наконец, (( expr )) конструкция является арифметической оценкой, так как ${+name} расширение возвращает либо 0, либо 1.

ZeroKnight
источник