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?
Eu tenho um problema reproduzível:
tmux
, tmux attach
ou 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/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 ...
-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 parecido PATH=/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:
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/profile
sempre seja um arquivo regular?