2017-01-22 3 views
1

Я использую msys2 bash 4.3.26 (i686-pc-msys) на Windows, и в последнее время я считаю, что это ломает мой pscp и scp (msys1):Как предотвратить MSYS от преобразования удаленного путь к файлу для PSCP

Когда я бегу pscp req.py hostname:/home/user/xxx/yyy/:

  • msys изменит второй арг на hostname;D:\msys\home\user\xxx\yyy\
  • , а затем pscp сообщит: ssh_init: Host does not exist
  • мой scp, который составляет от MSys-1.0 (я когда-то мерзавец-для-окон 1.9) сообщает ssh: Could not resolve hostnamehostname;d: no address associated with name

Это раздражает, и я должен открыть cmd.exe использовать pscp. Есть ли способ предотвратить MSYS 2 от конвертации специальных аргументов?

  • Я попытался обертывания ARG в ' или " и не
  • http://www.mingw.org/wiki/Posix_path_conversion не полезно, но разочарование
  • среда: Windows 10 Insider x64 и msys2 i686
  • официальный scp.exe в том же пакете msys2 хорошо работает

BTW, эта проблема возникает только в тех файлах .exe, которые не используются msys2 DLL. Как эта разница проверяется?

ответ

2

MSYS2 преобразует имена путей в стиле POSIX в имена путей пути в стиле Windows, когда обнаруживает, что вы запускаете собственную программу Windows, такую ​​как pscp. Эти преобразования используют много эвристик, и иногда они получают неправильный ответ.

Вы можете запретить преобразование определенных аргументов, установив переменную среды MSYS2_ARG_CONV_EXCL при запуске этой команды. Это список префиксов аргументов, для которых MSYS2 не должен пытаться преобразовывать пути. Вы можете просто установить переменную в пустую строку, чтобы отключить все преобразования. Однако вам может понадобиться первый аргумент для преобразования pscp, поскольку это путь на вашем локальном компьютере. Поэтому вы должны попробовать выполнить свою команду следующим образом:

MSYS2_ARG_CONV_EXCL=hostname pscp req.py hostname:/home/user/xxx/yyy/