bash set env variable не работает в pdsh

Я использую PDSH для управления несколькими серверами через одну командную строку.

Приведенная ниже команда отлично работает на отдельных серверах, но когда я ввожу команду экспорта в PDSH, повторение ее обратно пуст.

Любые идеи о том, почему это так, или как это исправить?

Конкретный пример:

Это прекрасно работает:

# export CRAWL_DATE=$(date +%Y%m%d); # echo $CRAWL_DATE 20131206 

но в PDSH, это echos пустые значения:

 pdsh> export CRAWL_DATE=$(date +%Y%m%d); pdsh> echo $CRAWL_DATE; <IP 1>: <IP 2>: 

    Когда я запускаю следующую команду, она работает нормально.

     $ pdsh -w root@skinner,root@mulder \ 'export CRAWL_DATE=$(date +%Y%m%d); echo $CRAWL_DATE;' skinner: 20131206 mulder: 20131206 

    Выполнение, как вы описываете, показывает следующее:

     $ pdsh -w root@skinner,root@mulder pdsh> export CRAWL_DATE=$(date +%Y%m%d); pdsh> echo $CRAWL_DATE; skinner: mulder: 

    Выполнение этого способа работает, хотя:

     pdsh> export CRAWL_DATE=$(date +%Y%m%d); echo $CRAWL_DATE; skinner: 20131206 mulder: 20131206 

    Так почему же не работал метод №2?

    Вероятная причина заключается в том, что каждый раз, когда вы запускаете команду в pdsh и pdsh return, эта команда выполняется через ssh на каждом хосте. Следующая команда, которая выполняется, запускается в совершенно другой сессии ssh с другой оболочкой, поэтому переменная не существует.

    Этот вопрос, который был подан в 2011 году, я считаю верным моему заключению. Проблема 37: Поддержка пользовательских переменных в pdsh .

    В этом вопросе было интересное обходное решение, в основном:

     $ pdsh -w ^hostfile -Rexec ssh -2 -l %u %h '. ~/.pdsh/vars/%h; command' 

    Этот метод использует файл, который будет содержать переменные, и каждая команда может затем передать этот файл . ~/.pdsh/vars/%h . ~/.pdsh/vars/%h каждый раз, когда команда запускается удаленно.