この投稿では、bash_profile、zshrcを中心にログインシェルについてまとめます。
少しでも参考になったら幸いです。
bash_profile、zshrcとは
bash_profile、zshrcとは、PCにログインをトリガーに動くシェル(ログインシェル)のことです。
そのため、bash_profile、zshrc(ログインシェル)を理解するということは、シェルを理解することとほぼ同義になるため、シェルについてまとめます。
シェルとは
シェルとは、ユーザの入力を、OSに翻訳してくれるものです。
OSは簡単に言ってしまうと、ハードウェアやソフトウェアを紐付けてくれるものです。
キーボードで入力した文字が画面に表示できるのはOSのおかげとイメージしてもらえると良いと思います。
ここまでの関係を図解すると以下のような形になります。
また、シェルには以下の3つの特徴があります。
- シェルはログイン後に動く
- 2つ以上のシェルを同時に使えない
- 使うシェルはログイン後も変更可能
③だけ少しイメージが湧きづらいと思いますので、具体例で補足します。
ログインシェルはbash_profileを選択していても、CLI(ターミナルなど)、
GUI(システム環境設定など)操作で、zshrcに切り替えることができるということですね。
切り替え方は、後述するので、気になった方は続きをお読みください。
シェルの役割の具体例
ユーザがOSに命令を出したい際に、翻訳してくれると言ってもイメージが湧きづらいと思いますので、
具体例を用いて、補足します。
例えば、Macで複数バージョンのRubyを使いたいために、rbenvを使うとします。
rbenvって何?って方は以下の記事を合わせてお読みください。
実はPC君はそんなに頭良くないので、ユーザがrbenvをインストールしても自動で使えるようにはしてくれないんですね。
そこで、シェルの出番です。シェルで、「rbenvを使います!」と宣言してあげれば、rbenvを使えるようになるんですね。
少しMacとRubyの話になってしまうのですが、実はMacには最初からRubyがインストールされていて、
rbenvを使います!と宣言してあげないと、最初から入っているRubyを使おうとするんですね。
ここまでを図にまとめると以下のようになります。
実際に、シェルの中身と、中身を変えた時にRubyのバージョンが変わることを確認してみましょう。
zshrcをシェルとして指定しており、zshrcに以下が記述されているとします。
rbenvを使用するよ!のzshrcへの記述:
eval "$(rbenv init -)"
zshrcの中身確認コマンド:
vi ~/.zshrc
すると、rbenvなのか最初から入っているRubyのどちらかを確認するコマンドで、rbenvが選択できていることが確認できます。
確認コマンド:
which ruby
出力結果:
/Users/○○○○(ユーザ名)/.rbenv/shims/ruby
また、zshrcから、rbenv使うよ!の宣言を消すと以下のような表示になります。
zshrcから消去する記述:
eval "$(rbenv init -)"
zshrcの変更をPCに反映するコマンド:
source ~/.zshrc
確認コマンド:
which ruby
出力結果:
/usr/bin/ruby
これで、シェルの役割がイメージいただけていると嬉しいです。
まだよくわからない!って方はコメントいただければ補足いたします。
シェル、ログインシェルの切り替え方
シェルの切り替えは、一時的なシェルの変更を指しています。(インタラクティブシェルといいます。)
一方、ログインシェルの切り替えは、ログイン後に使用するシェルの永続的な切り替えを指しています。
CLI(ターミナル)操作とGUI(システム環境設定)操作の両方で切り替えられるので、
それぞれ説明します。
また、GUIの設定によっては、CLI操作では切り替えられないことがあります。
GUIの設定が優先で反映されますので、切り替えられない場合は、GUI操作での切り替えをお試しください。
CLI操作でのシェル、ログインシェル切り替え
シェルをbashに切り替える:
bash
シェルをzshに切り替える:
zsh
ログインシェルをbashに切り替える:
chsh -s bin/bash
ログインシェルがbashであることの確認:
ターミナルの表示が「ユーザ名$」
ログインシェルをzshに切り替える:
chsh -s /bin/zsh
ログインシェルがzshであることの確認:
ターミナルの表示が「ユーザ名%」
GUIでのログインシェルの切り替え
切り替え方法は2種類あり、優先順位もあるので、切り替え方法と優先順位を別々にまとめます。
- ターミナルを開く
- ターミナルウィンドウがアクティブな状態で、リンゴマークの右の「ターミナル」をクリック
- 「環境設定」をクリック
- 「開くシェル」で「コマンド」をクリック
- 切り替えたいシェルを入力
- bashに切り替える場合は、「/bin/bash」
- zshに切り替える場合は、「/bin/zsh」
- ターミナルを再起動
- ターミナルの表示が切り替えたいシェル通りになっていれば、切り替え成功
- bashに切り替える場合は、「ユーザ名$」
- zshに切り替える場合は、「ユーザ名%」
- リンゴマークをクリック
- 左下の鍵を開く
- ログインユーザを2本指でクリック
- 「詳細オプション」をクリック
- ログインシェルで切り替えたいシェルを選択
- bashに切り替えるなら「/bin/bash」を選択
- zshに切り替えるなら「/bin/zsh」を選択
- OKをクリック
- ターミナルの表示が切り替えたいシェル通りになっていれば、切り替え成功
- bashに切り替える場合は、「ユーザ名$」
- zshに切り替える場合は、「ユーザ名%」
- 切り替え方法が①が優先される
- ②でbashを選択していても、①でzshを選択している場合はzshになる
- ①を反映させるには、②で「開くシェル」を「デフォルト」選択