こんにちは。iQeda [@iQeeeda] です。
.zshrc
ってなに? .zshenv
ってなに? どうやって使い分けるの?zsh の設定ファイルってこの 2 つ以外にもあるの?
なぜこんな地味な記事を投稿したのか…
初心者の方は「早く zsh を使いやすくする設定方法を知りたい」と思うかもしれません。
ですが、まず「シェルとはどういうものか?」をざっくり知る必要があります。
- シェルの使い方は【3 種類】あること
- シェルの【設定ファイルの種類】のこと
~/.zshenv
や~/.zshrc
に定義するべき【環境変数】のこと
今後、シェルの理解を深めていくうえで大事な話なんです!
まだ zsh インストールしていない人はこちらを参考にしてみてください。
そんなせっかちな人はこちらから .zshrc
を実際に zsh カスタマイズしてみましょう。
3 つのシェルの使い方
最初に知っておくべきこととして、シェルは使い分けによって以下のような呼び方をします。
- ログインシェル
- コマンドラインを起動したとき、サーバにログインしたときに立ち上がるシェルのこと
- 対話形式で入力する
- インタラクティブシェル
- コマンドラインで
bash
とかzsh
と入力すると起動するシェルのこと - 対話形式で入力する
- コマンドラインで
- シェルスクリプト
- シェルによるプログラミングファイルを作成して実行すること
zsh 設定ファイルの種類
~/.zshenv
と ~/.zshrc
だけ使えば、ほとんどの場合 OK です!※ ホームディレクトリに置かれた
.zshenv
と .zshrc
という意味です…ですが「設定ファイルはどのディレクトリに置くことができるのか?」
「他にどんな設定ファイルがあるのか?」をこれから全部説明します。
理解しておくべきことですが、暗記する必要はありませんよ。
.zshenv
- ログインシェル、インタラクティブシェル、シェルスクリプト、どれでも常に必要な設定を定義する
- zsh が起動して、必ず最初に読み込まれる設定ファイル
- 対話形式のシェル設定をここですると、シェルスクリプト誤作動の原因になるため注意する
- 影響範囲が大きいので記述は必要最低限にするべき
.zprofile
- ログインシェルに必要な設定だけを記述する
- zshenv の次に読み込まれる設定ファイル
- zsh ログイン時の一回だけ読み込まれる
.zshrc
- ログインシェル、インタラクティブシェルの場合に読み込まれる
.zlogin
- ログインシェルに必要な設定だけを記述する
- 最後に読み込まれる
- 役割は
.zprofile
とほぼ一緒。混乱を避けるため併用しないこと
.zlogout
exit
コマンドで zsh を抜けたときに読み込まれる
設定ファイルを置く場所で優先度が変わる
同じ名称のファイルであっても、ファイルを置く場所しだいで設定の優先度が変わります。
置ける場所は 2 つ。「ホームディレクトリ直下」もしくは「/etc
直下」です。
個人的な設定をしたファイルの配置場所は?
zsh の個人設定向けファイルは【ホームディレクトリ】に配置します。
あなたのホームディレクトリはどこなのか?…は環境変数 $HOME
の中身を見ればわかります。
# ホームディレクトリの値を表示
~ % echo $HOME
/Users/tak
この「ホームディレクトリ」というものは ~
という記号でも表現できます。
ホームディレクトリに移動するには cd ~
もしくは、cd
だけで OK です。
ホームディレクトリによく置かれる zsh 設定ファイル
ホームディレクトリ配下には、以下の zsh 設定ファイルが置かれることが多いです。
~/.zshenv
~/.zshrc
先程も言いましたが、基本的にこの 2 つの設定ファイルを使うだけで OK です。
環境変数 $ZDOTDIR について
僕は正直この環境変数 $ZDOTDIR
を使ったことはありませんが、
個人設定ファイルの場所を【ホームディレクトリから変更する】ことができます。
~/.zshenv
の中に環境変数$ZDOTDIR
を定義する$ZDOTDIR
に任意パスを設定する- 設定したディレクトリ内の個人設定ファイルが適用されるようになる
これが個人設定ファイルの場所をホームディレクトリから変更する手順です。
汎用的な設定をしたファイルの配置場所は?
/etc
ディレクトリ直下には、システム全体に影響を及ぼす汎用的な設定ファイルを置きます。
- 基本的に汎用設定が先に読み込まれます
- つまり後から読み込まれる「個人設定が優先」されます
- ただし
.zlogout
については、先に個人設定が読み込まれます- つまり後から読み込まれる「汎用設定が優先」されます
/etc 配下によく置かれる zsh 設定ファイル
/etc
配下には、以下の zsh 設定ファイルが置かれることが多いです。
/etc/zshenv
/etc/zprofile
/etc/zlogin
/etc/zlogout
~/.zshenv 設定例
~/.zshrc
の設定例はこちらを参考にしてみてください。
さて ~/.zshenv
の設定内容について説明します。
大事なのは「常に必要な設定を定義する」「 影響が大きいので記述は必要最低限にする」でした。
僕の場合、クリティカルな環境変数だけ ~/.zshenv
に定義しています。
※ $PATH
以外の環境変数はマストじゃないと思うので、好みで設定してください。
# 個人的に追加したパッケージを優先的に扱うため /usr/local/bin にパスを通す
export PATH=/usr/local/bin:$PATH
# デフォルトのエディターを emacs に設定
export EDITOR=emacs
# デフォルトの pager を less から lv に設定
export PAGER='lv -c'
# 文字コードの指定
export LANG=ja_JP.UTF-8
たとえば
echo $PATH
を実行すると、現在の $PATH
の値を見ることができます。【余談】環境変数 $PAGER で設定している lv とは
僕は PAGER
という環境変数を ~/.zshenv
内で設定しています。
そこで設定している lv
は機能が豊富で日本語対応している less
コマンドのようなものです。
もし使いたい場合はインストールが必要です。
# Mac 環境の場合
brew install lv
# CentOS 環境の場合
sudo wget http://ftp.riken.jp/Linux/dag/redhat/el6/en/x86\_64/rpmforge/RPMS/lv-4.51-1.el6.rf.x86\_64.rpm
sudo rpm -ivh lv-4.51-1.el6.rf.x86_64.rpm
# Ubuntu 環境の場合
sudo apt-get install lv
関連記事
zsh ロードマップ
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「Develop」の最新記事
コメント