Script bash OSX para executar uma vez no Terminal.app aberto

Script bash OSX para executar uma vez no Terminal.app aberto

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

Responder1

Veja como eu fiz isso:

Eu 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:**
Cada vez que uma nova janela de terminal é aberta, `.bash_profile` é gerado. Este comando
who | grep 'ttys' | wc -l

simplesmente conta o número de janelas de terminal que estão abertas. Se forem inferiores a 2 (em outras palavras; há apenas uma janela de terminal ativa), então echoThis is echoed in the first tty opened only



Informação da versão:

Versão OS X: 10.11.5

bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)

informação relacionada