Fonte new .bashrc em todos os terminais abertos

5

Eu me vejo tendo muitos terminais abertos ao mesmo tempo o tempo todo. Quando eu atualizo meu .bashrc , eu tenho que ir para cada terminal e executar

. .bashrc

para acessar o terminal com o novo .bashrc .

Isso é um tipo de dor e também consome tempo. Eu queria saber se existe uma maneira de obter todos os terminais abertos com o novo arquivo .bashrc sem ir a cada um deles ou sair e começar de novo?

    
por Jeff 22.03.2013 / 18:02

3 respostas

6

a abordagem de terdon funciona bem sob as circunstâncias certas, mas se, por exemplo, .bashrc é anexado a a variável PATH causará erros rapidamente.

Em vez de simplesmente fornecer recursos para o arquivo, você pode verificar primeiro o tempo de modificação e compará-lo ao horário da última versão originada.

Para fazer isso, anexe isso a ~ / .bashrc :

  • Linux

    bashrc_sourced=$(stat -c %Y ~/.bashrc)
    
    PROMPT_COMMAND='
        test $(stat -c %Y ~/.bashrc) -ne $bashrc_sourced && source ~/.bashrc
    '
    
  • OS X e BSD

    bashrc_sourced=$(stat -f %m ~/.bashrc)
    
    PROMPT_COMMAND='
        test $(stat -f %m ~/.bashrc) -ne $bashrc_sourced && source ~/.bashrc
    '
    

Em seguida, faça o recurso manualmente uma última vez.

    
por 22.03.2013 / 18:45
2

Em geral, lembre-se de incluir seu Sistema Operacional, a resposta correta geralmente depende do sistema. Lembre-se que o bash é usado por padrão na maioria dos Linuxes, OS X e muitos UNIXes.

De qualquer forma, no seu caso, o sistema operacional deve ser irrelevante, então o que você precisa fazer é definir o PROMPT_COMMAND variável:

Bash provides an environment variable called PROMPT_COMMAND. The contents of this variable are executed as a regular Bash command just before Bash displays a prompt.

Assim, como o comando que você deseja executar está fornecendo ~/.bashrc , adicione essa linha ao seu ~/.bashrc (o . é apenas um alias para source ):

PROMPT_COMMAND='source ~/.bashrc'

Agora, toda vez que o Bash exibir um prompt, ele primeiro relerá ~/.bashrc . Para obter seus terminais abertos (contanto que eles tenham sido abertos após você definir PROMPT_COMMAND ) para atualizar apenas execute qualquer comando ou simplesmente pressione Enter .

AVISO: Dependendo da complexidade de seu ~/.bashrc , isso pode adicionar um atraso perceptível, pois qualquer comando no arquivo será executado repetidamente.

    
por 22.03.2013 / 18:29
0

KISS

Coloque um ou ambos em um ou ambos / etc / profile e ~ / .bashrc

alias sProf='source /etc/profile'
alias sBrc='source ~/.bashrc'

outra abordagem:

Copie uma linha de terminal incluindo tudo entre as setas para incluir o comando e a nova linha e o clique do meio em cada terminal.

  <---------------------------->
$ source ~/.bashrc             | terminal border
    
por 22.03.2013 / 21:37