fugafuga.write

日々のログ

zsh 入門 - MacOSXのシェルをbash→zshに変更 -

Macの標準のログインシェルはbashですが、
zshという便利なシェルがあるみたいなので、導入してみます。

環境:MacOSX 10.9.4

シェルとはなんぞや?

ユーザの操作を受け付けて、与えられた指示をOSの中核部分に伝えるソフトウェア。キーボードから入力された文字や、マウスのクリックなどを解釈して、対応した機能を実行するようにOSに指示を伝える。WindowsではExplorerやコマンドプロンプトが、Mac OSではFinderが、UNIX系OSではbashやcshなどがシェルにあたる。UNIX系OSではシェルをユーザの好みに応じて選択することができる。

シェルとは 【 shell 】 - 意味/解説/説明/定義 : IT用語辞典

コマンドを使ってプログラム起動したり、インターネットからダウンロードしたり、GUIでできることをコマンド使ってできるよーってソフトです。

ログインシェルとはなんぞや?

LinuxやUNIXのユーザーがログインした際,最初に起動するシェルです。

Linuxキーワード - ログイン・シェル:ITpro

bashとはなんぞや?

bashはそれ以前に存在したBourneシェル(コマンド名はsh)の後継として開発され、その名称は“Bourne”と“Born Again”をかけたものとも言われる。Kornシェル(ksh)やCシェル(csh)などの持つ要素も取り入れられ、コマンド履歴やコマンド名の自動補完など今日では標準的に使われる多くの機能を実装している。

bashとは 【 Bourne Again shell 】 - 意味/解説/説明/定義 : IT用語辞典

zshとはなんぞや?

Z shell(zsh, 英語発音: [ziː ʃel])はUnixのコマンドシェルの1つである。 対話的なログインコマンドシェルとしても、強力なシェルスクリプトコマンドのインタープリターとしても使うことができる。
zsh は数多くの改良を含んだBourne Shellの拡張版という見方もできる。のみならず、bashやksh、tcshの非常に有用な機能も一部取り込まれている。

Z Shell - Wikipedia

なんと、bashやその他のshellの良いところをとりこんだ素晴らしいshell とのこと。

zshの良いところ

  1. コマンド補完機能が充実している
  2. 複数のzsh内で、コマンド履歴を共有できる
  3. コマンドのスペルミスを修正してくれる
  4. bashの振りをしてコマンドを実行することができる
  5. 文字の色分けなど、カスタムテーマを適用できる
  6. カスタマイズできないところは無いと言っても良い

すぐに恩恵を受けられそうなのは、補完機能、typo修正、テーマなどでしょうか。
楽しみ。

zsh をインストールする

Homebrewで最新版をインストールできます。
まずは、brewアップデートしときましょう。

$ brew update
…
$ brew doctor
Your system is ready to brew.

問題無ければインストールします。
Mac の場合、zsh起動時にPATHが書き換えられてしまうという問題があるので、
"--disable-etcdir"オプションを付加してインストールします。

$ brew install --disable-etcdir zsh
…
==> Summary
🍺  /usr/local/Cellar/zsh/5.0.6: 1084 files, 11M

インストールできたのでバージョン確認しておきましょう。

$ zsh --version
zsh 5.0.2 (x86_64-apple-darwin13.0)

うん。バージョンが違う。

なんでなのか調べたところ、Homebrewでインスト−ルしたものは、
/usr/local/Cellar 配下に格納され、
/usr/local/bin にコマンドのエイリアスが作成されるみたいです。

$ ls -l /usr/local/bin/zsh
lrwxr-xr-x  1 tokoyax  admin  27  9  6 17:03 /usr/local/bin/zsh -> ../Cellar/zsh/5.0.6/bin/zsh
$ /usr/local/bin/zsh --version
zsh 5.0.6 (x86_64-apple-darwin13.3.0)

$ /bin/zsh --version
zsh 5.0.2 (x86_64-apple-darwin13.0)

なるほどなー。

ログインシェルを zsh に変更する

さて、本題です。
/usr/local/bin/zsh にインストールされた最新版のzshを使うための設定をしていきます。

インストールされているシェルとそのパスを確認します。

$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

/usr/local/bin/zsh を追加しましょう。

$ sudo vi /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh

ログインシェルを変更します。

$ chsh -s /usr/local/bin/zsh
…パスワード入力

[ -s ] オプション :変更するシェルを指定する

これで、ターミナルを起動するとzshが起動するようになります。

zsh の設定

一から調べて設定するのは大変なので、
oh-my-zshというzshの設定管理ソフトを導入してみます。
プラグインなども公開されており、簡単に便利な機能が追加できるようです。

下記コマンドでインストール。

$ curl -L http://install.ohmyz.sh | sh

https://github.com/robbyrussell/oh-my-zsh


インストールが完了したら、ターミナルを再起動します。

➜  ~

プロンプトが矢印になって、色がついています。


便利なプラグインも入れておきましょう。

~/.zshrc を編集します。

$ vi ~/.zshrc
…
plugins=(git)

pluginsの項目に色々追加していきます。

plugins=(git ruby osx bundler brew rails emoji-clock)

編集が終わったら設定ファイルの再読み込みを行います。

$ source ~/.zshrc

テーマの変更をしてみます。

デフォルトでは、

$ vi ~/.zshrc
…
ZSH_THEME="robbyrussell"

robbyrussell というテーマになっています。

テーマは、
Themes · robbyrussell/oh-my-zsh Wiki · GitHubに公開されているので、
お気に入りのテーマを見つけたら、ZSH_THEME に設定して、設定をリロードさせれば反映できます。

私は、terminalparty というテーマにしています。


あとは、使いながらカスタマイズして変更があれば記事を追加していくことにします。



zshの本 (エッセンシャルソフトウェアガイドブック)

zshの本 (エッセンシャルソフトウェアガイドブック)

zsh最強シェル入門

zsh最強シェル入門