windows - Cygwin 命令可从命令行运行,但不能从脚本运行

标签 windows bash cygwin rsync

当我运行命令时:

rsync -avzhu --progress --exclude node_modules -e 'ssh -p 2022' /cygdrive/d/stuff_to_backup user@domain.com:/home2/user/backup

它在命令行中运行良好,但是当从 shell 脚本中执行完全相同的命令时,它会抛出此错误:

The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(1261) [Receiver=3.1.1]

知道为什么会发生这种情况吗?

最佳答案

花了大半个晚上试图解决这个问题,希望有一天这对其他人有所帮助。

我在解决这个问题时经常遇到的另一个错误是:

Unexpected remote arg: C:/Program Files (x86)/Git/cygdrive/c/Users

因为我注意到它只从 shell 脚本而不是命令行抛出错误,所以我能够确定它在没有 cygwin (cmd.exe) 的 Windows 上工作正常,它只是从它所在的 bash 运行有问题。

我遇到的大多数问题似乎都与引用相关,而且我对源的路径发生了一些奇怪的事情。我尝试使用像“/cygdrive/d/backup_dir”这样的路径,但它以某种方式被转换或解释为“C:/Program Files (x86)/Git/cygdrive/d/backup_dir”,这导致了错误。在我切换到没有“cygdrive”的相对路径后,这不是问题。我使用 cmder,所以可能是它造成的?

无论如何,最终的修复是省略“cygdrive”部分并使用相对路径。另外,不要对引号 '"' 过度热心。

关于windows - Cygwin 命令可从命令行运行,但不能从脚本运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32836331/

相关文章:

c++ - 如何调试 Cygwin 故障?

bash - Cygwin 从一个批处理文件运行脚本?

c# - 从 UWP 应用程序异步拖放

c# - 如何为集成了SQL Server数据库的C#Windows应用程序创建安装程序

windows - 有关拖放的信息!

linux - 存在 =`ssh xyz ' egrep "$username"/etc/passwd | cut -d' :' -f1' `命令不能正常工作

bash - 检查关联数组是否存在

linux - 如何通过 `bash`判断一个线程是不是内核线程?

在 Win7 上的 Cygwin 64 上找不到 BZIP2 库(64)

c# - AsyncCallback 没有被第二次调用