
Ich verwende OSX auf einem Mac und Terminal ziemlich oft. Ich habe einige Startskripte erstellt, die beim Öffnen der Shell mit der .bash_profile
Datei 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)