Eu tenho um problema reproduzível:
- configurar meu PATH no Bash .profile
- iniciar tmux por
tmux,tmux attachou qualquer variante - echo $ PATH e veja-o com os mesmos componentes, mas em ordem diferente
Como parar com isso? O que explica isso?
Eu tenho um problema reproduzível:
tmux, tmux attachou qualquer varianteComo parar com isso? O que explica isso?
Respostas:
Se você está em um Mac e está se perguntando por que /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bincontinua sendo anexado ao PATH ao executar o tmux, é por causa de um utilitário chamado path_helper que é executado no seu /etc/profilearquivo.
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_profilearquivo 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 .bashrcse você o tiver originado .bash_profile) para configurar o seu CAMINHO em conformidade.
Espero que faça sentido ...
-fpor -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_profilesanidade trouxe de volta ao meu feliz mundo tmux.
set -g default-command "${SHELL}"em .tmux.confforç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 $PATHseria 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 ~/.profilea ser adquirido novamente . Isso significa que se você tiver algo parecido PATH=/my/dir:/another/dir:$PATHnesse 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:
if [ "$_SKIP_PROFILE" ]; then
return 0
else
export _SKIP_PROFILE=y
fi
export PATH="/my/dir:/another/dir:$PATH"
if [ -n "$TMUX" ]cláusula, mas fiquei pensando - qual a importância disso[ -f /etc/profile ], realmente? Não é seguro supor que/etc/profilesempre seja um arquivo regular?