13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bash_profile、zshrcとは

Posted at

この投稿では、bash_profile、zshrcを中心にログインシェルについてまとめます。
少しでも参考になったら幸いです。

bash_profile、zshrcとは

bash_profile、zshrcとは、PCにログインをトリガーに動くシェル(ログインシェル)のことです。
そのため、bash_profile、zshrc(ログインシェル)を理解するということは、シェルを理解することとほぼ同義になるため、シェルについてまとめます。

シェルとは

シェルとは、ユーザの入力を、OSに翻訳してくれるものです。
OSは簡単に言ってしまうと、ハードウェアやソフトウェアを紐付けてくれるものです。
キーボードで入力した文字が画面に表示できるのはOSのおかげとイメージしてもらえると良いと思います。

ここまでの関係を図解すると以下のような形になります。

また、シェルには以下の3つの特徴があります。

  1. シェルはログイン後に動く
  2. 2つ以上のシェルを同時に使えない
  3. 使うシェルはログイン後も変更可能

③だけ少しイメージが湧きづらいと思いますので、具体例で補足します。
ログインシェルは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種類あり、優先順位もあるので、切り替え方法と優先順位を別々にまとめます。

切り替え方法①
  1. ターミナルを開く
  2. ターミナルウィンドウがアクティブな状態で、リンゴマークの右の「ターミナル」をクリック
  3. 「環境設定」をクリック
  4. 「開くシェル」で「コマンド」をクリック
  5. 切り替えたいシェルを入力
    1. bashに切り替える場合は、「/bin/bash」
    2. zshに切り替える場合は、「/bin/zsh」
  6. ターミナルを再起動
  7. ターミナルの表示が切り替えたいシェル通りになっていれば、切り替え成功
    1. bashに切り替える場合は、「ユーザ名$」
    2. zshに切り替える場合は、「ユーザ名%」
切り替え方法②
  1. リンゴマークをクリック
  2. 左下の鍵を開く
  3. ログインユーザを2本指でクリック
  4. 「詳細オプション」をクリック
  5. ログインシェルで切り替えたいシェルを選択
    1. bashに切り替えるなら「/bin/bash」を選択
    2. zshに切り替えるなら「/bin/zsh」を選択
  6. OKをクリック
  7. ターミナルの表示が切り替えたいシェル通りになっていれば、切り替え成功
    1. bashに切り替える場合は、「ユーザ名$」
    2. zshに切り替える場合は、「ユーザ名%」
切り替え方法の反映優先順位
  • 切り替え方法が①が優先される
    • ②でbashを選択していても、①でzshを選択している場合はzshになる
  • ①を反映させるには、②で「開くシェル」を「デフォルト」選択
13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?