如何在 bash 脚本中使用 unison-jz?

如何在 bash 脚本中使用 unison-jz?

unison-jz在 bash 命令行上运行良好,但在脚本中运行不佳。看来在脚本内部,它又回到了常规unison命令。有人可以告诉我如何unison-jz在 bash 脚本中使用吗?


我遇到了unison中描述的版本冲突#583058针对 ubuntu 的建议解决方案在交互式 shell 上运行良好。

但是,我想从bash脚本内部执行相同的操作:

#!/bin/bash
unison profile_name -sshargs '-i ~/.ssh/privatekey'

这是 MWE 版本script.sh(实际上,脚本更加复杂,但我检查了这个 MWE,它显示了相同的错误行为)。当我从与之前相同的命令行(但也从另一个 shell)调用此脚本时,似乎在脚本内部unison使用常规版本而不是快照版本unison-jz(从交互式 shell 调用时使用)。因此,同步失败并显示相同的内容致命错误和以前一样,说“这可能会发生,因为您在客户端和服务器计算机上安装了不同版本的 Unison”,我已经通过上述方法修复了这个问题。

如何使 shell 脚本使用捕捉的unison-jz版本而不是一致的?

客户端和服务器都在ubuntu上使用bash shell(客户端:20.04,服务器:18.04)。


我在命令行上做了什么:

  1. 安装 snap:

    sudo snap install --devmode unison-jz

  2. 将此行添加到我的一致配置文件中:

    servercmd = /snap/bin/unison-jz.unison -ui text

  3. 注释掉第 19 行,/etc/ssh/ssh_config这样看起来就像

    # Include /etc/ssh/ssh_config.d/*.conf

  4. 执行一致:

    unison profile_name -sshargs '-i ~/.ssh/privatekey'

这在交互式bashshell 中工作得很好。

相关内容