起動したターミナルアプリに合わせて、.bashrcの処理を分けた話

こんばんは。

 

今日は、Macでのターミナル環境を整えている時にちょっと特殊な(?)現象に遭遇したので、紹介しようと思います。

 

今回記事を書くにあたって、まず新しいターミナルアプリをインストールしたことが背景にあります。

 

Electron製のHyperTermというエディタを見つけ入れてみることにしました。

hyperterm.org

 

このエディタですが、Javascriptを書くことで、レイアウトやアニメーションを自由に変更することが可能になっています。

 

レイアウト等の変更についてはこちらの記事を参考にしてみてください。

qiita.com

 

公式で紹介されているPluginを入れてみました。

~/.hyperterm.js内のplugins:[]内に記述することで使用できるようです。

f:id:n_atmark:20161003011108j:plain

f:id:n_atmark:20161003004358g:plain

アニメーションが付いて、コマンドを打つのが楽しくなります。笑

 

そして、ここから本題です。

HyperTermをインストールしたのですが、HyperTerm側でPowerLineが表示されていません。

f:id:n_atmark:20161003011440j:plain

github.com

PowerLineが出ないので、ホスト名とユーザ名はもちろんパスも出なくなってしまいました。これでは困ります。

 

そこで、.bashrcの処理を実行ターミナルによって変更する必要が出てきました。

 

PowerLine側ではzshを使う案も考えたのですが、やはり使い慣れているbashの環境がよかったので、今回は.bashrcを処理を分岐することを目標にしました。

 

実行ターミナルを環境変数で確認できれば、すぐできそうなのですが、

なかなかネットで記事を探しても見つからず...

 

苦戦していたところで、そういえばsetとかいうコマンドがあったなぁ、と。ふと思い出す。

 

f:id:n_atmark:20161003012153p:plain

$TERM_PROGRAMという環境変数がありました。

(※どうやら、$TERM_PROGRAMという環境変数OS X用のものらしいです。)

 

 

function _update_ps1() {
export PS1="$(~/powerline-shell/powerline-shell.py --mode compatible $? 2> /dev/null)"
}
if [ ${TERM_PROGRAM} = "iTerm.app" ]; then
export PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

 .bashrcを編集して、iTermで起動しているときにだけPowerLineを呼び出すようにしてみました。 

 

f:id:n_atmark:20161003011337j:plain

無事、HyperTerm側ではPowerLineを呼び出さないようにできました。

 

おしまい。