1

Недавно я перешел с Cygwin на WSL, и у меня возникли проблемы с Sourcetree и commithooks.

Sourcetree использует собственную версию Cygwin (32 бит) для запуска git. Моя среда разработки работает на WSL (которая только 64-битная).

Итак, я хочу вызвать WSL bash из Sourcetrees Cygwin Bash и выполнить проверки commithook. Но это не работает, так как Cygwin Bash является 32-битной программой и поэтому не может выполнять WSL bash, которая является только 64-битной. Таким образом, Cygwin Bash видит в WSL bash неисполняемый файл.

Есть ли способ выйти из 32-битной песочницы в Windows 10 для вызова 64-битной программы?

2 ответа2

1

Здесь вы столкнулись с перенаправлением файловой системы WOW64. Потому что bash.exe в 64-битном каталоге System32 , но 32-битные программы видят 32-битный SysWOW64 когда запрашивают System32 . Дело не в том, что вы не можете запустить 64-битную версию из 32-битной, а скорее в том, что не можете найти исполняемый файл, который вы пытаетесь запустить в первую очередь.

У вас есть способ обойти это. Цитирую по этой ссылке:

32-разрядные приложения могут получить доступ к собственному системному каталогу, заменив% windir%\Sysnative на% windir%\System32. WOW64 распознает Sysnative как специальный псевдоним, используемый для указания того, что файловая система не должна перенаправлять доступ.

Поэтому просто вызовите явный путь через sysnative: %windir%\Sysnative\bash.exe (или $WINDIR/Sysnative/bash.exe в cygwin).

0

Нет, не напрямую, если ваша ОС 32-битная, но для этого вы можете провести сеанс 64-битной виртуальной машины, если у вас есть 64-битный процессор, но вы установили 32-битную хост-ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .