script bash OSX para executar uma vez em Terminal.app aberto

2

Estou usando o OSX em um Mac e uso o Terminal com bastante frequência. Eu construí alguns scripts de inicialização que executam no shell aberto com o arquivo .bash_profile . No entanto, eu gostaria de poder ter um deles executado apenas na abertura da primeira sessão do shell quando eu iniciar o aplicativo Terminal. Não consigo descobrir como ativá-lo apenas uma vez no aplicativo Terminal aberto (o primeiro shell do bash aberto), mas não em novos shells abertos posteriormente.

    
por MLP 26.09.2016 / 02:13

1 resposta

1

Veja como acabei de fazer isso:

Adicionei isso a .bash_profile

# Only do this in the first terminal opened
termsOpen=$(who | grep 'ttys' | wc -l)

if (( $termsOpen < 2 )); then
    echo "This is echoed in the first tty opened only"
fi

Então, ao iniciar o terminal pela primeira vez, recebo esta saída:

Last login: Mon Sep 26 08:30:42 on ttys001
This is echoed in the first tty opened only

Quando abro outro terminal (e, portanto, tenho duas janelas de terminal abertas ao mesmo tempo), recebo esta saída:

Last login: Mon Sep 26 08:33:43 on ttys000


Como funciona:
Toda vez que uma nova janela de terminal é aberta, .bash_profile é originado. Este comando

who | grep 'ttys' | wc -l

simplesmente conta o número de janelas de terminal que estão abertas. Se eles forem menores que 2 (em outras palavras, existe apenas uma janela de terminal ativa), então echo This is echoed in the first tty opened only


Informações da versão:

Versão do OS X: 10.11.5

bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
    
por 26.09.2016 / 08:36