ターミナルアプリを開いたときに一度実行する OSX bash スクリプト

ターミナルアプリを開いたときに一度実行する OSX bash スクリプト

私は 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)

関連情報