我在 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)