zsh+prezto環境構築

ubuntu 18.04 LTSをメインマシンで使用しています。ubuntuではdefaultのshellがbashですよね。bashももちろん悪くはないのですが、ここ数年はzshの柔軟さが気に入ってます。

という事で、今回はzshの環境構築を。

zshへの切り替えはzshのパッケージをインストールしてchshするだけで良いのですが、それだけではカスタマイズがちょっと面倒という事で、preztoという環境を利用させてもらっています。

https://github.com/sorin-ionescu/prezto

環境構築手順

  1. zshインストール&起動
  2. zsh起動
  3. preztoインストール
  4. シェル切り替え
  5. 各種設定

zshインストール&起動

これはまぁシンプルにいきましょう。

$ sudo apt install zsh
$ zsh

zshを起動すると、次のようなメッセージが表示されます。(初回起動時)

zshでは各種設定を .zshrc や .zprofile などに記載するのですが、これの初期ファイルを作るかどうか聞いているようですね。preztoを使う場合、preztoの設定ファイルで更新しますので、ここでは作成しない (q) を選択で良いです。

まずはシェルがzshに切り替わりますので、プロンプト表示が変わります。一見色気もなくてbashの方がよか〜とか思うかもしませんが、それはこれから設定するという事で。

prezroインストール

githubの手順説明の通りに進めます。まずはcloneですね。

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git ${ZDOTDIR:-$HOME}/.zprezto

ここでホームディレクトリの指定方法が bash と違う事に気づくと思います。bashだったら $HOME だけで良かったのにと。いえ、zshでも $HOME で良いんです。ただzshは仮想環境も考慮されているようで、${ZDOTDIR}を使うことで各種設定ファイルの保存ディレクトリを変更する事ができるわけですね。ホームディレクトリに .zなんちゃら ファイルがいくつもできるのが嫌な人にも朗報。とは言え、関連ファイルは6ファイルなので、仮想環境を作らない人は気にしなくても良いかも。

さて、preztoの設定ファイルをホームにリンクします。

$ setopt EXTENDED_GLOB
$ for rcfile in ${ZDOTDIR:-$HOME}/.zprezto/runcoms/^README.md(.N); do
    ln -s $rcfile ${ZDOTDIR:-$HOME}/.${rcfile:t}
  done

for〜doneまでが1行です。改行すると for> とか表示が出ますんで、気にせず続けて入力しましょう。

さて、ここで少し面白いのが ${rcfile:t} ですかね。これzshのmodifierってやつでして、$rcfile に記録されているファイルパスからファイル名だけを取得する方法です。bashで言うところのdirnameやbasenameでパス分解していたのと同じような処理ができます。

さて、ここまでくるとホームディレクトリに以下のようなファイル(正確にはシンボリックリンク)ができているはずです。

  • .zlogin
  • .zlogout
  • .zpreztorc
  • .zprofile
  • .zshenv
  • .zshrc

これらは全てcloneしたリポジトリ内のファイルにリンクされています。カスタマイズが必要になったら、実ファイルを自分のホームディレクトリにコピーして編集する方が良いでしょうね。

shell切り替え

まずは一旦zshを抜けて、再度起動してみましょう。

$ exit
$ zsh

どうでしょう?いきなり色付きの派手目の表示になったかと。ちゃんと動いてそうであればshの切り替えをしましょう。

$ chsh -s `which zsh`

これで次回ログインからzshがディフォルトで起動するようになります。zshではファイル名の大文字/小文字を問わない曖昧なマッチングやオプション等の候補表示など、かなりリッチな機能が提供されています。手に馴染めば使いやすくなるかと。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください