端末を開いたときにデフォルトでbyobu
・cowsay
を起動させたい。
要件
- 端末を開いたときに
byobu
のウィンドウ上でcowsay
出力 - ウィンドウを分割したときには
cowsay
出力しない
実装
.bashrc
if [ -z "$(ls /tmp | grep hogehoge)" ]; then
if [ $SHLVL -eq 1 ]; then
byobu
elif [ $SHLVL -eq 2 ]; then
cowsay -f tux `fortune`
touch /tmp/hogehoge
fi
fi
alias exit='exitexit'
function exitexit() {
if [ $SHLVL -eq 1 ]; then
rm /tmp/hogehoge
fi
command exit
}
要件1を満たすために$SHLVLを用いて子シェルからcowsay
が呼び出すようにしておく。また、このときに一時ファイル /tmp/hogehogeを生成しておく。これを用いて、ウィンドウ分割によってシェルからcowsay
が呼び出されないように条件分岐して 要件2を満たす。そして、exit
にはエイリアスを被せて親シェルを終了させるときに一時ファイルも消去するようにしておく。
実行結果
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-54-generic x86_64)
\* Documentation: https://help.ubuntu.com/
_____________________________________
/ You have a deep appreciation of the \
\ arts and music. /
-------------------------------------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
[amayaw9 ~]$
疑問
変数を用いる方法も試したけど定義するシェルが違うと参照できない?他に、もっとスマートな方法があれば教えてエロい人!?