У меня есть псевдонимы в файле ~/.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
Я обнаружил, что мои псевдонимы недоступны в моих командах по ткани, например. когда я делаю это в ткани script:
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
из оболочки (n.b. /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"
Теперь я могу использовать псевдонимы в своих командах по ткани... просто отлично!
Итак, мои вопросы:
-
Есть ли проблемы с этим решением? Если да, что мне делать?
-
Есть ли у кого-нибудь проблемы с запуском псевдонимов в своих файлах?
-
Есть ли очевидная причина, почему у меня может быть эта проблема, а другие - нет?
-
Может ли кто-нибудь указать мне ссылки и т.д., которые описывают эту проблему и разрешение? А также объясните, как они их нашли...:)