Как использовать версию находки Cygwin вместо версии Windows - PullRequest
1 голос
/ 07 июня 2019

Я установил Cygwin на мою машину и установил папку bin в моем PATH.

Я могу использовать все команды Cygwin в командной строке Windows.

Однако одна проблема у меняОбнаружено, что оба Cygwin в Windows имеют команду "find".Всякий раз, когда я использую find, выбирается версия для Windows.

Можно ли в любом случае принудительно использовать версию Cygwin find вместо версии Windows?

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Убедитесь, что папка исполняемых файлов cygwin /usr/bin опережает папку исполняемых файлов cmd c:\Windows\system32 в переменной PATH для оболочек cmd и bash, чтобы убедиться, что вы запускаете команду cygwin find вместо команды find для windows.

Используйте which -a find в оболочке cygwin для вывода списка исполняемых файлов, найденных с помощью переменной PATH оболочки bash.

Используйте where $PATH:find в оболочке cmd для просмотра списка исполняемых файлов, найденных с помощью переменной PATH оболочки cmd.

0 голосов
/ 09 июня 2019

Это потому, что find является встроенной в cmd оболочкой, поэтому она даже не пытается пройти по пути поиска исполняемого файла.

В общем, символические ссылки Cygwin не будут поняты в Windows, но, как объяснено https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks, в современных версиях Windows возможно , позволяющих создавать собственные символические ссылки Windows в файловых системах NTFS, если ссылка не существует. кросс-файловые системы.

Я бы хотел вместо этого просто обернуть его, скажем, в пакетный скрипт, помещенный в ваш Cygwin /usr/local/bin с именем, подобным cygfind.bat (или как вы хотите его назвать), который явно вызывает Cygwin's find от C:\path\to\find.exe.

Преимущество подхода-оболочки заключается в том, что если вы обновите Cygwin и обновите find, пакетный сценарий, обертывающий его, будет по-прежнему работать прозрачно.

Я никогда не пробовал сам, но согласно этому ответу вы также можете использовать специальную переменную @doskey для переопределения встроенных команд cmd.

...