Quando o tmux inicia ou abre uma nova janela, ele não carrega o meu .profileou .bashrc. Acabo digitando . ~/.bashrctodas as vezes. Existe uma maneira de fazer isso acontecer automaticamente?
Quando o tmux inicia ou abre uma nova janela, ele não carrega o meu .profileou .bashrc. Acabo digitando . ~/.bashrctodas as vezes. Existe uma maneira de fazer isso acontecer automaticamente?
Respostas:
Sim, no final do seu .bash_profile, coloque a linha:
. ~/.bashrc
Isso origina automaticamente o arquivo rc sob as circunstâncias em que normalmente só processaria o perfil.
As regras de quando bash determinados arquivos são executados são complicadas e dependem do tipo de shell que está sendo iniciado (login / não-login, interativo ou não e assim por diante), junto com os argumentos da linha de comando e variáveis de ambiente.
Você pode vê-los na man bashsaída, apenas procure INVOCATION- você provavelmente precisará de algum tempo para digerir e decodificar :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
A execução do bash funcionou explicitamente para mim, adicionando esta linha ao meu arquivo ~ / .tmux.conf:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf : set -g default-command "/bin/bash". Obrigado cara.
As respostas anteriores forneciam soluções, mas não explicavam o motivo. Aqui está.
Isso está relacionado aos arquivos Bash init. Por padrão, ~/.bashrcé usado em um shell interativo sem login . Não será originado em um shell de login. Tmux usa um shell de login por padrão. Conseqüentemente, shells iniciados por tmux skip ~/.bashrc.
default-commandcomando shellO padrão é uma string vazia, que instrui o tmux a criar um shell de login usando o valor da
default-shellopção.
Arquivos de inicialização para Bash,
/etc/profile~/.bash_profile, ~/.bash_login, ~/.profile(Apenas um primeiro que existe)/etc/bash.bashrc (algum Linux; não no Mac OS X)~/.bashrc$BASH_ENVO estranho requisito de carregamento interativo sem login confunde as pessoas em outras situações também. A melhor solução é mudar a exigência de carga de ~/.bashrccomo única interativa , que é exatamente o que algumas distribuições, como o Ubuntu, estão fazendo.
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Esta 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 tmuxDeste tópico:
parece que usar .bash_profilefuncionaria.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
A solução que funcionou para mim é a seguinte:
.bash_profilearquivo se você não tiver um em~.bash_profilecolocação source ~/.bashrcousource ~/.profileO problema agora deve ser corrigido.
Eu tive o mesmo problema e as soluções até agora não funcionaram para mim. A solução que acabou funcionando para mim pode ser encontrada aqui .
Resumindo, as tmuxjanelas / sessões usam um shell de login que procura ~/.profileentre outros arquivos quando é iniciado.
O que eu queria era que zsh começasse com cada nova tmuxjanela, então coloquei exec zshna parte inferior da minha ~/.profile.