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)。
我在命令行上做了什么:
安装 snap:
sudo snap install --devmode unison-jz
将此行添加到我的一致配置文件中:
servercmd = /snap/bin/unison-jz.unison -ui text
注释掉第 19 行,
/etc/ssh/ssh_config
这样看起来就像# Include /etc/ssh/ssh_config.d/*.conf
执行一致:
unison profile_name -sshargs '-i ~/.ssh/privatekey'
这在交互式bash
shell 中工作得很好。