Macでbashかzshかを確認する方法と切り替える方法(sh, bash, zshとは?)

Mac_Shell

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、Macでbashかzshかを確認する方法と切り替える方法(sh, bash, zshとは?)についてまとめて解説していきます。

Macでbashかzshかを確認する方法と切り替える方法

MacのShell確認をする: echo $SHELL

echo $SHELLで、MacのShellを確認することができます。

通常は、zsh か bash かのどちらかになります。

ちなみに、MacOS Catalina以降からデフォルトのシェルがbashからzshに置き換えられました。

# MacのShellの確認
echo $SHELL

# [ 実行結果 ]
/bin/zsh

変更可能なShellの確認: cat /etc/shells

次のコマンドで、お使いのMac環境で設定が可能なシェルの一覧を確認することができます。

cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

ターミナルで使用するデフォルトのShellを変更する

ターミナルで使用するデフォルトのShellを変更するには、次のようなchshコマンドを実行します。

ちなみにchshは、change shell の略です。

chsh -s /bin/zsh

上記コマンドを実行して、Shellを変更した後は、ターミナルを再起動します。

デフォルトのShellを変更しなくても、Shellと対話することはできる

先ほどのコマンドでは、デフォルトのShellを変更して、ターミナルでコマンドを動かすShellを固定で変えていますが、

一時的にShellを使用したいだけなら、そのShellをコマンドで、呼び出すという手段もあります。

zshがデフォルトShellのMacで、bashコマンドを実行すると、bashと対話モードになります。

% bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

bash-3.2$ 

ただ、上記に記載ある英文のとおり、Default の対話Shellはzshになっているので、このbashとの対話モードは一時的なものです。

Default の対話Shellそのものを変更したい場合は、先述のchshコマンドを使用します。

ちなみに、bashとの一時的な対話モードから抜けるには、exitコマンドで、抜けることができます。

bash-3.2$ exit
exit

【おまけ】そもそもShell(シェル)とは?

そもそもShell(シェル)とは、何でしょうか?

そのことについて、最後にまとめていきます。

次のShell(シェル)の説明が、わかりやすかったので引用します。

そもそものところでシェル(Shell)とは、殻のことです。

OSとアプリケーションの間に立ってユーザからの要求をシステムに伝えるためのユーザインターフェースで、

要はコマンドを入力することで動くプログラムのことをシェルといいます。

人間がOSのカーネル(核)を直接いじって致命的なエラーを出さないように、

貝の殻のように『OSを包み込んで守る』という役割からシェルと呼ばれているみたいです。

ちなみに、よく聞く『シェルスクリプト』とはシェルが解釈できるコマンドを並べたファイルのことを言い、

シェルとは別物なのでシェルスクリプトを省略してシェルと呼ばないように注意が必要です!

引用元: シェルってなに?bashとzsh、自分のMacはどっちを使ってるの?

つまり、人間がOSのカーネル(核)を直接いじって致命的なエラーを出さないように仲介して、動作するプログラムであり、

コマンドをOSのカーネル(核)に伝えるプログラムだと言えます。

sh, bash, zshとは?

Shell(シェル)にも、さまざまな種類がありますが、Macでよく登場するのは、sh, bash, zsh などだと思います。

sh, bash, zshの関係性についてまとめると、次のとおりです。

  1. sh: オリジナルのUnixシェルで、一番古いShellです。
    • 1970年代にSteven Bourne氏によって開発されたため、Bourne Shellとも呼ばれます。
  2. bash: shに拡張機能を追加した、一番有名なShellです。
    • Linuxなど多くのオペレーティングシステムでデフォルトのShellとして採用されています。
    • 機能が多く移植性に優れています。
  3. zsh: z(ゼット) Shell とも呼ばれ、bashから派生したシェルです。
    • bashよりも多くの機能と拡張機能を持ち、カスタマイズ性が高く、シンタックスハイライトなどの機能が備わっています
    • MacOS Catalina以降からデフォルトのシェルがbashからzshに置き換えられました。

基本的に、今現在のShellでは、bashzshなどのshの後継シェルが広く使われています。

また、shbashは同じコマンドとして扱われる場合があるものの、

bashの方が機能が多く移植性に優れているため、現在のLinux環境でシェルスクリプトを作成する場合はbashzshが推奨されます。

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

参考・引用

  1. Macのターミナル(シェル)でbashやzsh を切り替える方法
  2. シェルってなに?bashとzsh、自分のMacはどっちを使ってるの?

最近の投稿