OSX bash 脚本在 Terminal.app 打开时执行一次

OSX bash 脚本在 Terminal.app 打开时执行一次

我在 Mac 上使用 OSX,并且经常使用终端。我构建了一些启动脚本,这些脚本在使用.bash_profile文件打开的 shell 上执行。但是,我希望能够在启动终端应用程序时仅在第一个 shell 会话打开时运行其中一个。我不知道如何让它在终端应用程序打开(第一个 bash shell 打开)时启动一次,但不在随后打开的新 shell 上启动。

答案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)

相关内容