#windows #environment-variables #git-bash #git-for-windows
Вопрос:
Вывод which -a
команд:
$ which -a grep
/usr/bin/grep
/bin/grep
/usr/bin/grep
/c/_Apps/bin/grep
/usr/bin/grep
$ which -a which
/usr/bin/which
/bin/which
/usr/bin/which
/usr/bin/which
Тот /usr/bin/xxx
появляется трижды.
Эквивалентная where
команда Windows показывает уникальные записи:
$ where grep
D:_AppsGitusrbingrep.exe
C:_Appsbingrep.exe
$ where which
D:_AppsGitusrbinwhich.exe
Версия Git
$ git --version
git version 2.33.0.windows.2
Записи в PATH
переменной среды (связанные с Git):
- D:_AppsGitmingw64bin
- D:_AppsGitusrbin
- D:_AppsGit
Примечания:
- Причина, по которой первая команда
grep
показывает дополнительную запись (/c/_Apps/bin/grep
), заключается в том, что у меняgrep
хранится отдельный исполняемый файл (вместе сsed
иwget
). - Я использую портативную версию Git для Windows
- Я попытался поискать в Google
"git bash" "which" command shows multiple entries /usr/bin
, но не смог найти никаких результатов (отсканировал только первые несколько записей).
Примечание по теме: Я предполагаю, что именно поэтому многие базовые команды Git в моей системе работают медленно. Даже git log
или git status
занимает несколько секунд каждый раз, когда они запускаются. Я попробовал предложения по этому поводу из других сообщений SO, включая обновление Git. Ни один из них до сих пор не сработал.
Комментарии:
1. Находится
/usr/bin
в $PATH несколько раз в первой системе?2. встроенная
type
команда bash (help type
для получения дополнительной информации), скорее всего, будет быстрее, чемwhich
и предоставит вам лучшую информацию.3. Вероятно, не поэтому команды Git работают медленно, так как оболочка прекращает поиск, когда находит первый элемент. Медлительность, скорее всего, вызвана не используемым по умолчанию антивирусом, брандмауэром или программным обеспечением безопасности.
4. Обратите внимание, что «git bash» — это неправильное название: bash-это «оболочка» (интерпретатор командной строки). Bash изначально был написан для систем Unix/Linux. Git нужна оболочка, совместимая с POSIX, и для этого достаточно bash. Поэтому, чтобы заставить Git работать в Windows, кто-то перенес bash в Windows. Эта программа (bash-для-Windows) теперь поставляется в комплекте с Git-для-Windows. Люди называют это «git bash», но на самом деле это просто bash для Windows. Вам не нужно иметь Git, чтобы использовать его.
5. Оболочки Unix действительно хорошо работают в системах Unix/Linux и гораздо хуже в Windows (по многим причинам), но они не должны быть болезненно медленными на современном оборудовании. Как предполагает bk2204, вероятно, происходит что-то еще, что замедляет его.