
私は Mac で OSX を使用しており、ターミナルを頻繁に使用しています。.bash_profile
ファイルを使用してシェルを開いたときに実行されるスタートアップ スクリプトをいくつか作成しました。ただし、ターミナル アプリを起動したときに最初のシェル セッションが開いたときにのみ、そのうちの 1 つを実行できるようにしたいと考えています。ターミナル アプリを開いたとき (最初の bash シェルが開いたとき) に 1 回だけ起動し、その後に開いた新しいシェルでは起動しないようにする方法がわかりません。
答え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
別のターミナルを開くと(つまり、2 つのターミナル ウィンドウが同時に開くと)、次の出力が表示されます。
Last login: Mon Sep 26 08:33:43 on ttys000
**仕組み:**
新しいターミナルウィンドウが開かれるたびに、`.bash_profile`が読み込まれます。このコマンドは
who | grep 'ttys' | wc -l
開いているターミナルウィンドウの数を単純に数えます。2より少ない場合(つまり、アクティブなターミナルウィンドウが1つだけの場合)、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)