~/.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
シェルから (nb/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"
これで、fabric コマンドでエイリアスを使用できるようになりました...最高です!
だから私の質問は:
このソリューションに問題はありますか? もしそうなら、私は何をすべきですか?
fabfiles でエイリアスを実行する際に問題を抱えている人はいますか?
私がこの問題を抱えていて、他の人がそうではない明らかな理由はありますか?
この問題と解決策を説明するリンクなどを教えてもらえますか? また、彼らがそれらをどのように見つけたかについても説明してください... :)