Скрипт OSX bash для однократного выполнения при открытии Terminal.app

Скрипт OSX bash для однократного выполнения при открытии Terminal.app

Я использую OSX на Mac и довольно часто использую Terminal. Я создал несколько скриптов запуска, которые выполняются при открытии оболочки с файлом .bash_profile. Однако я хотел бы иметь возможность запустить один из них только при открытии первой сессии оболочки, когда я запускаю приложение Terminal. Я не могу понять, как сделать так, чтобы он запускался только один раз при открытии приложения Terminal (первая открытая оболочка bash), но не при последующих открытиях новых оболочек.

решение1

Вот как я это сделал:

Я добавил это в.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

Итак, при первом запуске терминала я получаю следующий вывод:

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

Когда я открываю другой терминал (и, таким образом, у меня одновременно открыты два окна терминала), я получаю следующий вывод:

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

**Как это работает:**
Каждый раз, когда открывается новое окно терминала, `.bash_profile` запускается. Эта команда
who | grep 'ttys' | wc -l

просто подсчитывает количество открытых окон терминала. Если их меньше 2 (другими словами, активно только одно окно терминала), то echoThis is echoed in the first tty opened only



Информация о версии:

Версия OS X: 10.11.5

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

Связанный контент