оператор bash && предотвращает фоновую работу через ssh

После попытки выяснить, почему задача Capistrano (которая пытался запустить демон в фоновом режиме) завис, я обнаружил, что использование &&в bash поверх ssh предотвращает запуск последующей программы в фоновом режиме. Пробовал на bash 4.1.5 и 4.2.20.

Следующее будет зависать (т.е. ждать завершения sleep) в bash:

ssh localhost "cd /tmp && nohup sleep 10 >/dev/null 2>&1 &"

Следующее не будет:

ssh localhost "cd /tmp ; nohup sleep 10 >/dev/null 2>&1 &"

Также не будет этого:

cd /tmp && nohup sleep 10 >/dev/null 2>&1 &

Оба zsh и dash будут выполнять его в фоновом режиме во всех случаях, независимо от &&и ssh. Это нормальное/ожидаемое поведение для bash или ошибка?

7
задан Hinrik 30 March 2012 в 17:56
поделиться