Quando o tmux inicia ou abre uma nova janela, ele não carrega o meu .profile
ou .bashrc
. Acabo digitando . ~/.bashrc
todas 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 .profile
ou .bashrc
. Acabo digitando . ~/.bashrc
todas 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 bash
saí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-command
comando shellO padrão é uma string vazia, que instrui o tmux a criar um shell de login usando o valor da
default-shell
opçã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_ENV
O 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 ~/.bashrc
como ú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 tmux
Deste tópico:
parece que usar .bash_profile
funcionaria.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
A solução que funcionou para mim é a seguinte:
.bash_profile
arquivo se você não tiver um em~
.bash_profile
colocação source ~/.bashrc
ousource ~/.profile
O 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 tmux
janelas / sessões usam um shell de login que procura ~/.profile
entre outros arquivos quando é iniciado.
O que eu queria era que zsh começasse com cada nova tmux
janela, então coloquei exec zsh
na parte inferior da minha ~/.profile
.