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

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:/sbinexport PATH=/usr/local/sbin:/usr/local/opt/php70/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin# ...if \[ -f ~/.bashrc \]; then. ~/.bashrcfi
この様に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 bashif \[ -n "$BASH\_VERSION" \]; then# include .bashrc if it existsif \[ -f "$HOME/.bashrc" \]; then. "$HOME/.bashrc"fifi# set PATH so it includes user's private bin directoriesPATH="$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
をインストールしてください。