Вопрос или проблема
У меня установлена Windows, и я хотел бы изменить определение встроенной команды Windows (в частности, sort
) на установленную команду git, чтобы каждый раз, когда я пишу sort
в командной строке, выполнялась версия sort
для Unix вместо версии Windows. Я слышал о doskey
из этого вопроса, но это действительно не срабатывает для меня, так как игнорирует, когда я пытаюсь передать ей другие команды. Выполнение where sort
дает мне следующий вывод:
C:\>where sort
C:\Windows\System32\sort.exe
C:\Program Files\Git\usr\bin\sort.exe
Существует ли способ заставить sort
каждый раз выполнять путь внизу? Спасибо!
Это говорит мне о том, что альтернативный sort.exe
находится в вашем %path%
; в противном случае его бы не нашел с помощью этой конкретной где
команды (без тегов или переключателей):
C:\>where sort C:\Windows\System32\sort.exe C:\Program Files\Git\usr\bin\sort.exe
В %PATHEXT%
посмотрите на стандартный вывод:
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
Если расширение .COM
стоит на первом месте, это означает, что поиск sort
будет специально следовать порядку нахождения sort.com
перед тем, как искать sort.exe
. Это объясняет, почему sort.bat
, sort.cmd
, sort.vbs
и другие варианты/расширения не работают.
Это заставляет меня думать, что вы не выбрали замены find
и sort
на “альтернативные” версии, предложенные установщиком Git.
Таким образом, было бы правильной попыткой просто переименовать расширение sort
.exe
в sort
.com
и посмотреть, как оно будет вести себя с вашими командами и перенаправлениями (|Sort
), где оно будет приоритетным в порядке первой встречи в поиске %PATHEXT%
..
Примечание 1.: Поскольку я предвижу, что обновления и проверки исполняемых файлов могут происходить спорадически, простое переименование может привести к некоторым неожиданным проблемам (или возможно, нет, кто знает?) с действиями Git (такими как обновления, проверки файлов и т. д.). Поэтому я все еще верю, что копирование sort.exe
в sort.com
может быть жизнеспособным вариантом, который хорошо работает с windows/cmd и избегает любых аномалий с Git.
Примечание 2.: Следует учитывать, что для выполняемых скриптов, запланированных задач, резервных копий и других текущих действий в системе, которые используют sort.exe
, потребуется внесение некоторых изменений, чтобы учесть программируемые действия в ожидаемых выводах для флагов, используемых в этих скриптах. Если это применимо, рассмотрите возможность нахождения и модификации скриптов для реализации соответствующих /flags
, которые “/совместимы
“ с обеими версиями или просто укажите полные пути к sort.exe
(%WinDir%\System32\Sort.exe
) в ваших скриптах.
Примечание 3: Альтернативным вариантом мог бы быть вариант поместить копию sort.exe
, переименованную в sort.com
, в директорию C:\Windows\System32\
. Однако я не уверен, что windows будет “возражать” против присутствия этого файла и удалит его. У меня нет никакого представления о том, чего ожидать, когда это действие будет выполнено, но это может быть полезно, если windows позволит такую попытку без каких-либо “негативных” реакций.
Ответ или решение
Д changing the default behavior of the sort
command in Windows to utilize the Unix version from Git can be accomplished through a few methods. Below, I provide a detailed guide to help you achieve this, taking into account the relevant technical aspects and potential pitfalls.
Понимание проблемы
При вводе команды sort
в командной строке Windows система по умолчанию использует файл C:\Windows\System32\sort.exe
. Ваша цель заключается в том, чтобы настроить систему таким образом, чтобы вместо этого использовалась версия sort
из Git, расположенная по пути C:\Program Files\Git\usr\bin\sort.exe
.
Использование пути окружения (%PATH%)
Система Windows ищет исполняемые файлы, следуя порядку, указанному в переменной окружения %PATH%
. Чтобы гарантировать, что команда sort
будет указывать на Unix-версию, следует изменить порядок поиска. Есть несколько способов сделать это:
-
Изменение переменной окружения PATH:
- Перейдите в «Панель управления» → «Система» → «Дополнительные параметры системы» → вкладка «Дополнительно» → кнопка «Переменные среды».
- Найдите переменную
Path
, нажмите «Изменить», и переместите путь кC:\Program Files\Git\usr\bin
вверх в списке, вышеC:\Windows\System32
.
Эта модификация обеспечит, что при вводе команды
sort
будет использоваться версия из Git, поскольку система сначала найдетsort.exe
в указанной директории. -
Использование файла командных скриптов:
Можно создать пакетный файл, который будет переопределять командуsort
. Создайте текстовый файл с расширением.bat
, например,sort.bat
, и поместите в него следующую строку:@echo off C:\Program Files\Git\usr\bin\sort.exe %*
Сохраните файл в одной из директорий, указанных в переменной
%PATH%
, и убедитесь, что он находится выше в порядке поиска, чемC:\Windows\System32\sort.exe
. -
Использование переопределения через
doskey
:
Возможно, вы также можете использовать командуdoskey
, но она может не поддерживать все функции, как упоминалось вами. Если использоватьdoskey
, можно попытаться создать макрос:doskey sort=C:\Program Files\Git\usr\bin\sort.exe $*
Но как вы заметили, этот метод игнорирует конвейеры, поэтому его не рекомендую.
Рекомендации по безопасности и функциональности
-
Создание резервных копий: Прежде чем вносить изменения в системные переменные, рекомендуется создать их резервные копии на случай, если возникнут проблемы.
-
Проверка совместимости: Убедитесь, что скрипты или приложения, использующие
sort.exe
, совместимы с новой версией. В некоторых случаях это может потребовать дополнений или изменений в скриптах. -
Тестирование: После внесения изменений обязательно протестируйте команду
sort
в командной строке, чтобы убедиться, что новое поведение соответствует вашим ожиданиям.
Заключение
Настройка команды sort
для использования Unix-версии из Git может улучшить вашу рабочую среду в Windows, обеспечивая доступ к мощным утилитам командной строки. Убедитесь, что вы придерживаетесь предложенных шагов и проверяете совместимость, чтобы избежать сбоев в работе системы. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за поддержкой.