Sumário
Quando crio uma nova sessão do tmux, meu prompt é extraído de uma configuração padrão do bash e preciso executar manualmente o source ~/.bashrc
meu prompt personalizado.
Análise
Estou usando uma máquina RHEL 7. Comecei a perceber esse comportamento após uma atualização do bash há algum tempo, mas ainda não fiz a pergunta até agora (e não tenho certeza de qual atualização isso começou a acontecer).
Por exemplo, eu personalizei meu prompt para se parecer com:
[user@hostname ~]$
Sempre que inicio uma nova sessão do tmux, ele usa o que parece ser o padrão do bash:
-sh-4.2$
Uma execução rápida source ~/.bashrc
sempre corrige o problema, mas é irritante que eu tenha que fazer isso toda vez que quiser corrigir algo pequeno. Alguma idéia de como obter o tmux para fazer isso automaticamente novamente?
Se mais alguma informação for necessária, fico feliz em fornecer.
tmux.conf
Para referência, tenho meu tmux.conf
arquivo abaixo, embora dificilmente seja o que você poderia chamar de personalizado.
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
source ~/.bashrc
linha à minha.bash_profile
, tentei sair e entrar novamente, criar uma nova sessão do tmux, mas nenhuma alteração. Alguma ideia?.tmux.conf
a linhaset-option -g default-shell "/bin/bash"
. Isso deve resolver seu problema (pelo menos, espero que sim)!bash
via Homebrew e isso não funcionar, mude"/bin/bash"
para"/usr/local/bin/bash"
.Isso está relacionado aos arquivos init do Bash. Por padrão,
~/.bashrc
é usado em um shell interativo sem logon . Não será fornecido em um shell de login. O Tmux usa um shell de login por padrão. Portanto, os shells iniciados pelo tmux skip~/.bashrc
.Arquivos de inicialização para o Bash,
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(Apenas um primeiro que existe)/etc/bash.bashrc
(alguns Linux; não no Mac OS X)~/.bashrc
$BASH_ENV
Solução
O estranho requisito de carregamento interativo e sem logon também confunde as pessoas em outras situações. o melhor solução é alterar o requisito de carregamento apenas
~/.bashrc
como interativo , que é exatamente o que algumas distros, como o Ubuntu, estão fazendo.Essa deve ser a solução que você deseja. E eu recomendo que todos os usuários do Bash configurem isso no perfil.
Referências
man tmux
fonte
Adicionando o seguinte a
.tmux.conf
:NÃO produz o resultado desejado.
Somente ao adicionar
source "$HOME/.bashrc"
a~/.bash_profile
resultado pretendido é alcançado.Isso funcionará em uma sessão ativa do tmux ao abrir uma nova janela ou painel, e também ao desanexar e abrir uma nova sessão do tmux.
Testado em:
fonte