Bash/Terminalのデザイン変更 + gitブランチ表示

Git Branch Name on Terminal

Mac のTerminal、Linux のBashのデフォルトデザインは黒に白が基本ですが、もう少し見やすく出来ないものかと思うことは誰もがあると思います。

Mac のTerminalはデザインがカスタムできますが、そこまで色々変える必要はないんだけど、、という時に役に立つshellスクリプトを紹介したいと思います。

Bash の設定ファイル

Login Shell が起動すると、まず.profileまたは.bash_profileが読み込まれます。

その中で、もし.bashrcが存在すれば、それを実行し、設定を読み込むという構文が見れらます。

ちなみに.bashrcの"rc"は"run commands"、すなわち『コマンドを実行する』という意味ということです。

.bash_profile と.bashrc の違い

**.profile**はすべての login shell で実行されます。

**.bash_profile**はその名の通り、ユーザのプロファイル(設定)ですので、login shell の bash を開いた時に読み込まれます。

**.bashrc**は non-login shell で読み込まれるので、グローバルセッティングを記述しておき、.bash_profile内で読み込むことで、それが両方に反映されるということになります。

Mac の場合

Mac では.bash_profileがユーザーホームにあります。

export PATH=/usr/local/bin:/usr/local/opt/php70/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export PATH=/usr/local/sbin:/usr/local/opt/php70/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
# ...
if \[ -f ~/.bashrc \]; then
. ~/.bashrc
fi

この様にPATHの情報がたくさん書いてあるので、ここでPATHを読み込んでいるのがわかります。最後にif構文がありますが、ここで.bashrcを読み込んでいます。無い場合は記述します。

Linux (Ubuntu)

Ubuntu は.profileというファイルで初期化を行います。

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if \[ -n "$BASH\_VERSION" \]; then
# include .bashrc if it exists
if \[ -f "$HOME/.bashrc" \]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"

このファイルの説明がコメントされている後に、同じく.bashrcがあればそれを読み込むという記述があります。

ちなみに、コメントによれば『.bash_profile.bash_loginがあったらそっちが優先されますよ』ということが書いてありますので、デフォルトを残して設定はファイルでオーバーライドしたい場合は上記のファイルを作成すれば済む様です。

.bashrc

基本的には Mac も Linux も同じ構文を書けば良いですが、.bashrcがない場合は作って下さい。

色を変えて改行

export PS1='\\\[\\033\[01;32m\\\]\\u@\\h\\\[\\033\[01;33m\\\] \\w \\n\\\[\\033\[01;34m\\\]\\$\\\[\\033\[00m\\\] '

詳しいことは他の方が記事にしていますので割愛しますが、32、33 などの記述が実際のカラーナンバーになりますので、これを変更することで好きな色にできます。256 色のスキームから選べます。参考はこちら

PS1はプロンプトのデザインを入れる環境変数の一つ目くらいに思っておけば良いと思います。

git のブランチ表示

git_branch() {
git branch 2\> /dev/null | sed -e '/^\[^\*\]/d' -e 's/\* \\(.\*\\)/ (\\1)/'
}
export PS1='\\\[\\033\[01;32m\\\]\\u@\\h\\\[\\033\[01;33m\\\] \\w $(git\_branch) \\n\\\[\\033\[01;34m\\\]\\$\\\[\\033\[00m\\\] '

この方の gistを参考にさせていただきました。

git_branch関数内で branch があれば表示する処理を行なっています。

gitが入っていないとエラーになりますので、先にgitをインストールしてください。

参考

COPYRIGHT © 2023 Kohei Ando