Как предотвратить MSYS от преобразования удаленного пути к файлу для PSCP
Я использую msys2 bash 4.3.26 (i686-pc-msys)
на Windows, и недавно я обнаружил, что это ломает мой pscp
а также scp (msys1)
:
Когда я бегу 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 (я когда-то использовал git-for-windows 1.9) сообщаетssh: Could not resolve hostname
hostname;d
: no address associated with name
Это раздражает, и я должен открыть cmd.exe
использовать pscp
, Есть ли способ предотвратить преобразование MSYS 2 специальных аргументов?
- Я пытался обернуть арг в
'
или же"
и не удалось - http://www.mingw.org/wiki/Posix_path_conversion не помогает, но разочаровывает
- среда: Windows 10 Insider x64 и msys2 i686
- официальный
scp.exe
в той же упаковкеmsys2
работает хорошо
Кстати, эта проблема возникает только на тех файлах.exe, которые не используют библиотеки msys2. Как эта разница проверяется?
1 ответ
MSYS2 преобразует имена путей в стиле POSIX в имена путей в стиле Windows, когда обнаруживает, что вы запускаете собственную программу Windows, такую как pscp. Эти преобразования используют много эвристики, и иногда они получают неправильный ответ.
Вы можете запретить преобразования определенных аргументов, установив MSYS2_ARG_CONV_EXCL
переменная окружения при запуске команды. Это список префиксов аргументов, для которых MSYS2 не должен пытаться преобразовать пути. Вы можете просто установить переменную в пустую строку, чтобы отключить все преобразования. Однако вам может понадобиться преобразовать первый аргумент в pscp, так как это путь на вашем локальном компьютере. Так что вместо этого вы должны попробовать выполнить команду:
MSYS2_ARG_CONV_EXCL=hostname pscp req.py hostname:/home/user/xxx/yyy/