Вызов псевдонимов bash в скриптах Fabric

У меня есть псевдонимы в файле ~/.bash_aliasesна удаленном сервере Ubuntu. Файл загружается стандартным образом из файла ~/.bashrc, вот так:

if [ -f ~/.bash_aliases ]; then
   . ~/.bash_aliases
fi

Этот ~/.bashrcфайл, в свою очередь, загружается (также стандартным образом )из файла ~/.profile, который выглядит так:

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    source ~/.bashrc
    echo ".profile loaded.bashrc"
  fi
fi
mesg n

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

run("aliased_command")

Я получаю этот вывод:

run: aliased_command
out:.profile loaded.bashrc
out: /bin/bash: aliased_command: command not found
Fatal error: run() encountered an error (return code 127) while executing 'aliased_command'

Теперь мне удалось воспроизвести это за пределами структуры, войдя на сервер с помощью ssh и запустив:

~# /bin/bash -l -c aliased_command 

из скорлупы (н.б. /bin/bash -l -c— значение ткани по умолчанию, см. здесь)Я получаю тот же результат:

.profile loaded.bashrc:
/bin/bash: aliased_command: command not found

После некоторого поиска по связанным темам я где-то прочитал, что псевдонимы не экспортируются для интерактивных оболочек, не являющихся -, и затем мне удалось исправить это, используя/bin/bash -l -c -i(-iпереводит bash в интерактивный режим ).

Затем я добавил следующее в свой fabfile.py:

env.shell = "/bin/bash -l -c -i" 

Теперь я могу использовать псевдонимы в своих командах ткани... просто отлично!


Итак, мои вопросы:

  • Есть ли проблемы с этим решением? Если да, то что мне делать?

  • У кого-нибудь еще есть проблема с запуском псевдонимов в их fabfiles?

  • Есть ли очевидная причина, по которой у меня может быть эта проблема, а у других нет?

  • Может ли кто-нибудь указать мне ссылки и т. д., которые описывают эту проблему и решение? А также объясните, как они их нашли...:)

11
задан tshepang 30 July 2012 в 22:49
поделиться