OSX-Bash-Skript zur einmaligen Ausführung beim Öffnen von Terminal.app

OSX-Bash-Skript zur einmaligen Ausführung beim Öffnen von Terminal.app

Ich verwende OSX auf einem Mac und Terminal ziemlich oft. Ich habe einige Startskripte erstellt, die beim Öffnen der Shell mit der .bash_profileDatei ausgeführt werden. Ich möchte jedoch, dass eines davon nur beim Öffnen der ersten Shell-Sitzung ausgeführt wird, wenn ich die Terminal-App starte. Ich kann nicht herausfinden, wie ich es nur einmal beim Öffnen der Terminal-App (der ersten geöffneten Bash-Shell) starten kann, aber nicht bei anschließend geöffneten neuen Shells.

Antwort1

So habe ich es gerade gemacht:

Ich habe dies hinzugefügt zu.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

Wenn ich das Terminal zum ersten Mal starte, erhalte ich diese Ausgabe:

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

Wenn ich ein anderes Terminal öffne (und somit zwei Terminalfenster gleichzeitig geöffnet habe), erhalte ich diese Ausgabe:

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

**So funktioniert es:**
Jedes Mal, wenn ein neues Terminalfenster geöffnet wird, wird `.bash_profile` als Quelle verwendet. Dieser Befehl
who | grep 'ttys' | wc -l

zählt einfach die Anzahl der geöffneten Terminalfenster. Wenn diese kleiner als 2 sind (mit anderen Worten: es ist nur ein Terminalfenster aktiv), dann echoThis is echoed in the first tty opened only



Versions Information:

OS X-Version: 10.11.5

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

verwandte Informationen