zshの設定ファイルの整理
はじめに
元々使用していたPCではbashのシェルを使用していました。
PCの切り替えに伴い、バックアップをとってPCにデータを入れたのですが、そこではzshのシェルをデフォで使用している為、設定がうまく引き継げませんでした。
そこら辺を整理のため記述していきます。
※Macを使用しているため、Mac基準で記載していきます。
そもそも
「シェルはターミナルから受け取った命令をカーネルに伝える」
よく見る図
terminal(ターミナル)とは
Macのデフォルトアプリ。コマンドでPCに命令することができるもの。
通常、ターミナルとはPCやスマホなどの端末を指すことが多いが、「システムに何かを入力して、その結果を出力する」という意味では一緒。
Shell(シェル)とは
ターミナルで受け取った指示をkenrnelに伝える役割。
ユーザーは直接PCのシステムを動かしているわけではなく、仲介をしてくれるシェルがあるからこそ、ユーザーが行いたいことを実行できる。
Kernel(カーネル)とは
OSの中核のソフトウェア。ここに指示をすることで、システムが動く。
ハードウェアとソフトウェアの仲介もしている。
使用しているシェルの確認方法
echo $SHELL
// 出力結果
/bin/zsh
zshを使っている
グローバルとローカルの設定ファイル
グローバルの設定ファイル
全てのユーザーの設定ファイル
/etc
の配下にある
ローカルの設定ファイル
~(ユーザー名)/
の配下に隠しファイルとして置いてある(.---のようにドットから始まるファイル名)
隠しファイルを表示するためには、ターミナルで ls -a
最初にグローバルの設定ファイルが読み込まれ、その後、同じ名称のローカルのファイルが読み込まれる。
よって、グローバルの設定ファイルはローカルの設定ファイルに上書きされる。
基本的にはローカルの設定ファイルを触るため、グローバルの設定ファイルは一旦無視して良いかも。
ファイルと読み込み順
下記の番号順に読み込まれる。
①zshenv
一番最初に読み込まれる。
名前から察するに、zshの環境ファイルである為、ログインシェル、インタラクティブシェル、シェルスクリプトなど、全ての環境で必要な記述をここにする。
※ログインシェル
ログインシェルとは、一番最初に立ち上がるシェルのこと。
私の場合、前のPCのログインシェルはbashだったが、新しいPCではzshがログインシェルになった。
ちなみに、同時に2つのシェルを使用することはできない。
※インタラクティブシェル
双方向でやりとりができるシェル。実行したら、何かが帰ってくるシェル。一般的にターミナル入力して、何かが帰ってくるのは、インタラクティブなシェルであるから。
ここでは、ログインシェル以外の対話型のシェルを総称する。
※シェルスクリプト
シェル上で操作するための簡易プログラミング言語。
こちらのファイルを実行する際は、システムと双方向のやりとりが必要がなく、ノンインタラクティブなシェルモードを使用している。
②zprofile
ログインシェルを立ち上げた際に、一度だけ読み込まれる。
③zshrc
ログインシェルとインタラクティブシェルを立ち上げた時に読み込まれる。
シェルスクリプトでは反映されないため、その場合はzshenvファイルに記述するようだ。
※の他、zlogin、zlogoutファイルもあるが、使用する機会がないため、割愛する。
設定ファイルを変更した場合
①ターミナルを終了後、もう一度立ち上げる
②下記入力でファイルを再実行する
source ~/.zshrc(ファイル名)
補足
zsh_historyファイル
vim等で開くと、今までのzshで入力したコマンドが表示されている
zshrcのrcって・・・
Run Commandsの略のよう
さいごに
zprofileとzshrcのファイルの読み込み順に注意して設定ファイルに記述していこうと思います。
Discussion