今までずっとbashを使ってきて、やっとこzshに乗り換えることに踏み切ったHIROKIです。
昔に同僚がOSデフォルトでついてくるシェルではもの足らず、zshを導入した後にシステムに大きな変更を加えてzshが正常に動作しなくなりました。ユーザーではもちろんログインできず、rootのシェルもzshにしていたために、rootでもログインできず、どうにもこうにもならない状態となっているのを目撃してからはOSデフォルト以外のシェルを使うのをやめていました。
扱うのはLinuxが中心だったので、いままでbashが中心。
FreeBSDを扱うときは、もちろんcshでした。
そして、ウノウではみんなzshであり、魔法のようなコマンドさばきを見ていて、とうとうzshに踏み切りました。
そんなこんながありまして、zshを改めて設定してみました。
皆さんも、導入を検討してみてはいかがでしょうか。
まず、bashがデフォルトのOSであれば、$HOME/.bashrcに下記を追加しておきます。
# use zsh if [ -f /bin/zsh ]; then exec /bin/zsh fi
こうすることによって、たとえzshが正常に動作しなくなったとしてもzshさえ消せば、OSデフォルトのbashで動作することができます。
ここからは、$HOME/.zshrcをだらだらと書き連ねていきます。
# PROMPT PS1="[@${HOST%%.*} %1~]%(!.#.$) " # この辺は好み RPROMPT="%T" # 右側に時間を表示する setopt transient_rprompt # 右側まで入力がきたら時間を消す setopt prompt_subst # 便利なプロント bindkey -e # emacsライクなキーバインド export LANG=ja_JP.UTF-8 # 日本語環境 export EDITOR=emacs # エディタはemacs autoload -U compinit # 強力な補完機能 compinit -u # このあたりを使わないとzsh使ってる意味なし setopt autopushd # cdの履歴を表示 setopt pushd_ignore_dups # 同ディレクトリを履歴に追加しない setopt auto_cd # 自動的にディレクトリ移動 setopt list_packed # リストを詰めて表示 setopt list_types # 補完一覧ファイル種別表示 # 履歴 HISTFILE=~/.zsh_history # historyファイル HISTSIZE=10000 # ファイルサイズ SAVEHIST=10000 # saveする量 setopt hist_ignore_dups # 重複を記録しない setopt hist_reduce_blanks # スペース排除 setopt share_history # 履歴ファイルを共有 setopt EXTENDED_HISTORY # zshの開始終了を記録 # history 操作まわり autoload history-search-end zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end bindkey "^P" history-beginning-search-backward-end bindkey "^N" history-beginning-search-forward-end # alias alias ls="ls -G" zstyle ':completion:*' list-colors 'di=34' 'ln=35' 'so=32' 'ex=31' 'bd=46;34' 'cd=43;34' [ -f ~/.zshrc.include ] && source ~/.zshrc.include # 設定ファイルのinclude
以上が僕の.zshrcです。コピペで使えば、それなりに幸せになれます。
ポイントとしては、サーバ固有の設定やaliasに関しては、$HOME/.zshrc.includeというファイルを作って、こちらを個別に設定しています。本番サーバなんかはプロントを赤くしたり、特定のサーバにしかないコマンドはこのファイルに書いたりなど。
これが便利だ!という設定があったらぜひ、教えてください!
ではでは、またいつか。