Terminal.app が開かれると、OSX bash スクリプトが一度実行されます。

Terminal.app が開かれると、OSX bash スクリプトが一度実行されます。

私はMacでOSXを使用しており、端末をたくさん使用しています。.bash_profileファイルを開くを使用して、シェルで実行されるいくつかの起動スクリプトを作成しました。しかし、ターミナルアプリケーションを起動し、最初のシェルセッションが開かれたときにそのうちの1つだけを実行したいと思います。ターミナルアプリケーションが開かれたとき(最初の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

別の端末を開くと(したがって、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)

関連情報