如何防止MSYS转换pscp

时间:2017-01-22 10:00:21

标签: filepath scp msys2 pscp

我在Windows上使用msys2 bash 4.3.26 (i686-pc-msys),最近我发现它打破了我的pscpscp (msys1)

当我运行pscp req.py hostname:/home/user/xxx/yyy/时:

  • msys会将第二个参数更改为hostname;D:\msys\home\user\xxx\yyy\
  • 然后pscp将报告:ssh_init: Host does not exist
  • my scp来自msys-1.0(我曾经使用过git-for-windows 1.9)报告ssh: Could not resolve hostname hostname;d : no address associated with name < / LI>

这很烦人,我必须打开cmd.exe才能使用pscp。有没有办法阻止MSYS 2转换特殊的args?

顺便说一下,这个问题只出现在那些不使用msys2 DLL的.exe文件上。如何检查这种差异?

1 个答案:

答案 0 :(得分:3)

当MSYS2检测到您正在运行像pscp这样的本机Windows程序时,它将POSIX样式的路径名转换为Windows样式的路径名。这些转换使用了很多启发式方法,有时候会得到错误的答案。

您可以通过在运行命令时设置MSYS2_ARG_CONV_EXCL环境变量来禁止某些参数的转换。它是MSYS2不应尝试转换路径的参数前缀列表。您可以将变量设置为空字符串,以便关闭所有转换。但是,您可能需要转换pscp的第一个参数,因为它是本地计算机上的路径。所以你应该尝试像这样运行你的命令:

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