如何防止MSYS将远程文件路径转换为pscp

Dah*_*ong 4 scp filepath pscp msys2

bash 4.3.26 (i686-pc-msys)在 Windows 上使用 msys2,最近我发现它破坏了我的pscpand 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
  • myscp来自 msys-1.0 (我曾经使用过 git-for-windows 1.9)报告ssh: Could not resolve hostnamehostname;d: no address associated with name

这很烦人,我必须打开cmd.exe才能使用pscp。有什么方法可以阻止 MSYS 2 转换特殊参数吗?

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

Dav*_*son 5

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

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

MSYS2_ARG_CONV_EXCL=hostname pscp req.py hostname:/home/user/xxx/yyy/
Run Code Online (Sandbox Code Playgroud)