RVM + TMUX - entradas duplicadas em $ PATH

3

Meus arquivos de configuração de terminal do Linux (.bash_profile, .profile, .bashrc) expandem $ PATH com a inclusão de alguns diretórios personalizados. Isso só acontece uma vez (e eu também incluí alguns guardas baseados em VV para garantir que isso só aconteça uma vez). Meu .bash_profile também origina o script .rvm ( ~/.rvm/scripts/rvm ) que preenche seus próprios diretórios personalizados. Esses diretórios do RVM devem ser os primeiros.

Tudo está OK, desde que eu esteja em uma sessão de bash limpa.

Se eu executar tmux , no entanto, as entradas de diretório dos meus arquivos de configuração serão adicionadas ao PATH duplamente (independentemente das proteções de variável ENV). Parece que o tmux tem dois ambientes para variáveis ENV que são então mesclados.

Isso é um problema, já que as entradas prefixadas pelo script .rvm só são prefixadas uma vez, e no cenário do tmux elas não terminam primeiro.

Como posso evitar que isso aconteça?

Editar - informações adicionais: Todas as minhas adições do PATH são prefixadas em .profile , que incluo de .bash_profile ( . ~/.profile ). Todos os meus terminais GUI são executados "como um shell de login".

Em cada arquivo de configuração, eu uso guardas do seguinte formulário para evitar dupla inclusão:

    if [ "$PROFILE_SOURCED" != "true" ]; then
         export PROFILE_SOURCED=true
    ...
    fi

Ao adicionar uma entrada ao PATH, quero dizer export PATH=entry:$PATH .

    
por PSkocik 13.04.2014 / 12:16

1 resposta

2

Resolvido pelo seguinte:

  1. Colocou um guarda em volta do meu código de manipulação PATH em .profile

    if [ "$PATHS" != "true" ]; then
        export PATHS="true"
    #Manipulate and export PATH over here
    fi
    
  2. Guardas de nível de arquivo removidas em torno de .bash_profile e .bashrc

  3. IMPORTANTE :      RESTARTED o servidor tmux . (%código%)     - o manual indica que o servidor mantém seu próprio ambiente, que ele herda de seu shell pai. Se os arquivos de configuração forem alterados, killall tmux precisará recomeçar.

por 13.04.2014 / 18:18