Вызов rsync в bash из Windows cmd - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь запустить rsync из командного файла. Команда

SET CMD="rsync -P -rptz --delete -e 'ssh -i /root/.ssh/CERTIFICATE.pem' SOURCE_ADDRESS  /mnt/c/Users/MYNAME/IdeaProjects/PROJECT/SUBFOLDER/SUBFOLDER/SUBFOLDER/SUBFOLDER/LASTFOLDER"

bash %CMD%

Это прекрасно работает, если я запускаю команду после ввода bash, но когда я запускаю команду из cmd с прекурсором bash, он говорит, что нет такого файла или каталога.

Кроме того, когда играешь и пытаешься отладить bash, он зависает ... то есть, если я открываю bash, я не получаю приглашения, только мигающий курсор.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 22 мая 2019

Для запуска команды с bash вам необходимо использовать опцию -c

bash -c "%CMD%"

Без него первый неопциональный параметр будет обрабатываться как сценарий оболочки * .sh, который rsync не является и вызовет ошибку

Если аргументы остаются после обработки опции, и ни опция -c, ни опция -s не были предоставлены, первым аргументом считается имя файла, содержащего команды оболочки.

Обратите внимание, что cmd в Windows - это не DOS, хотя у них есть несколько похожих команд. Остальные очень разные

...