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

时间:2015-09-29 05:32:03

标签: 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]

为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:2)

晚上花了很多时间试图解决这个问题,所以希望有一天这会帮助别人。

当我摆弄这个问题时,我会得到很多其他错误:

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"部分并使用相对路径。另外,不要过分热心地引用#39;"'。