Eu tenho um problema reproduzível:
- configurar meu PATH no Bash .profile
- iniciar tmux por
tmux
,tmux attach
ou qualquer variante - echo $ PATH e veja-o com os mesmos componentes, mas em ordem diferente
Como parar com isso? O que explica isso?
Se você está em um Mac e está se perguntando por que /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
continua sendo anexado ao PATH ao executar o tmux, é por causa de um utilitário chamado path_helper que é executado no seu /etc/profile
arquivo.
Você não pode persuadir facilmente o tmux (ou melhor, o bash) a não fonte /etc/profile
(por alguma razão, o tmux sempre roda como um shell de login, o que significa que o / etc / profile será lido), mas você pode garantir que os efeitos do path_helper não estrague o seu caminho.
O truque é garantir que PATH esteja vazio antes que path_helper seja executado. No meu ~/.bash_profile
arquivo eu tenho o seguinte:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
A limpeza do PATH antes da execução do path_helper impedirá que ele prefira o PATH padrão ao PATH (anteriormente) escolhido e permitirá que o restante dos scripts de configuração do bash pessoal (comandos mais abaixo .bash_profile
, ou .bashrc
se você o tiver originado .bash_profile
) para configurar o seu CAMINHO em conformidade.
Espero que faça sentido ...
if [ -n "$TMUX" ]
cláusula, mas fiquei pensando - qual a importância disso[ -f /etc/profile ]
, realmente? Não é seguro supor que/etc/profile
sempre seja um arquivo regular?-f
por-e
, mas eu pessoalmente não tentaria obter um arquivo a partir de um script que é executado quando eu faço login, a menos que eu tenha verificado se ele estava lá. Porém, costumo reutilizar meu script bash em muitas máquinas diferentes (e sistemas operacionais), então gosto de garantir que sejam à prova de balas. Eu posso imaginar que outras variantes do Unix possam chamar de outra coisa.~/.bash_profile
sanidade trouxe de volta ao meu feliz mundo tmux.set -g default-command "${SHELL}"
em.tmux.conf
forças tmux usar cascas não login. Eu não vejo o ponto neles, de qualquer maneira, já que você normalmente abre o tmux depois de já estar logado.Não; a classificação
$PATH
seria uma coisa muito louca, uma vez que muitos sistemas dependem de sua ordem definida pelo usuário.No entanto, tmux não iniciar o seu shell no modo "login", causando
~/.profile
a ser adquirido novamente . Isso significa que se você tiver algo parecidoPATH=/my/dir:/another/dir:$PATH
nesse arquivo, isso será feito novamente , resultando em $ PATH contendo/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
. Para evitar isso, você pode usar outra variável para verificar:fonte
@Graham Ashton Obrigado pela sua ideia
Minha sugestão seria que você colocasse
no seu arquivo .zshrc na parte superior.
VERIFIQUE SE O SEU
está abaixo.
fonte