
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_profile
arquivo. 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)