Aliases e tmux

12

Aliases definidos .bash_aliasese .bashrcnão funcionam tmux.

Isso pode ser alterado em alguma configuração, para que os aliases funcionem tmux?

xralf
fonte
2
Tem certeza de que o problema está ocorrendo tmux? Uso o tmux há cerca de um ano e não vi nenhum problema com aliases. Tente adicionar set -xno início .bashrce execute o tmuxcomando source ~/.bashrc. Pode ser que você encontre erros e resolverá o seu problema.
rush

Respostas:

9

tmuxlança um shell de login por padrão, portanto ~/.bashrc, não será executado (que posteriormente origina ~/.bash_aliases. Você precisa originar a ~/.bashrcpartir do seu ~/.bash_profile. Consulte a INVOCATIONseção man bash.

Chris Down
fonte
19

( A resposta de Chris Down tem a explicação correta, mas não uma boa solução alternativa)

Seu problema decorre de uma combinação de um bug de design do bash e de tmux.

Por padrão, o tmux inicia um shell de login em todas as janelas. Isso não faz sentido: se você configurou o tmux como seu shell de login, precisará definir a default-commandopção para algo diferente de tmux; e se você não tiver definido o tmux como seu shell de login, precisará definir a default-commandopção para evitar iniciar um shell de login no tmux. Então faça beicinho no seu ~/.tmux.confe diga ao tmux para iniciar um shell comum:

set-option -g default-command $SHELL

Então você .bashrcserá lido. Há outro problema com o bash, que não importa aqui se você configurar o tmux conforme recomendado acima, mas que voltará à tona novamente se você efetuar login no modo de texto (em um console de texto ou por SSH). O Bash lê ~/.bash_profileem shells de login e ~/.bashrcem shells interativos, mas apenas se eles não forem shells de login. Para ler ~/.bashrctambém nos shells de login, se eles forem interativos, adicione isso ao seu ~/.bash_profile:

case $- in *i*) . ~/.bashrc;; esac
Gilles 'SO- parar de ser mau'
fonte
+! Foi preciso a última parte para corrigir meus aliases e o prompt do PS1, mas foi o que aconteceu!
quer