我使用 rsync 在两台计算机之间同步文件。在一台计算机上,我的默认 shell 设置为 fish,这会导致 rsync 中断(“协议版本不匹配 - 您的 shell 是否干净?”)。
有没有办法告诉 rsync 使用 /bin/sh 而不是默认的登录 shell?
答案1
我看到这个rsync 手册页:
诊断
rsync 有时会产生一些看起来有点难以理解的错误消息。最让人困惑的似乎就是“协议版本不匹配 - 你的 shell 干净吗?”。
此消息通常是由启动脚本或远程 shell 工具在 rsync 用于传输的流上产生不需要的垃圾引起的。诊断此问题的方法是按如下方式运行远程 shell:
ssh remotehost /bin/true > out.dat
然后查看 out.dat。如果一切正常,那么 out.dat 应该是一个零长度文件。如果您从 rsync 收到上述错误,那么您可能会发现 out.dat 包含一些文本或数据。查看内容并尝试找出产生它的原因。最常见的原因是配置错误的 shell 启动脚本(例如 .cshrc 或 .profile),其中包含非交互式登录的输出语句。