
Я использую 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)