🎩

シェルのshについてEnvaderで学んでみた。

2022/04/21に公開

どうも、kobakichiです。

今回も、Envaderを利用してLinuxについて学習したので、そのまとめと振り返りです。
Envaderとは何?という方のためにリンクを貼っておきますので、参考にどうぞ。

簡単に説明すると、Linux環境を環境構築なしですぐに学ぶことのできる、オンライン学習サービスです。

Envader

コース一覧

今回使用したシナリオ

参考にさせていただいた記事一覧

Bourne Shell

使っているシェルを調べる方法

【Linux】シェルってなに?!その内容から具体的な役割・機能まで徹底解説!

この記事で分かること

  • shとは何か?
  • shの特徴
  • デフォルトシェルの確認方法
  • 使用できるシェルがいくつあるのかの確認方法
  • シェルの切り替え方法

今回のディストリビューション環境

今回使用したディストリビューションは下記になります。
環境によって若干の違い があるかも知れませんので、その場合は適宜置き換えて考えてみてください。

# ディストリビューション
"Debian GNU/Linux 9 (stretch)

shとは

Bourne shellの略。
Bシェルとも呼ばれる。

1977年、AT&Tベル研究所のスティーブン・ボーン氏が開発したシェル。
これまでにもシェルは存在していたが、シェルスクリプトに変数などが利用できるようになったのがこのBシェルが初めてで、利便性が向上されたシェル。

シェルの種類としては、他に

  • bash
  • zsh
  • ksh
    などが存在する。

上記のシェルについては詳細の説明は割愛します。

こちらの記事が参考になりました。
【Linux】シェルってなに?!その内容から具体的な役割・機能まで徹底解説!

ただ、bashzshの方が新しく開発されたシェルのため、shに比べてかなり便利になっているな、というのが私の印象です。

shの特徴

今回このシナリオを体験してみて強く感じたのが、shbashzshに比べて、タブ補完やcontrol + dでの削除、control + fでのカーソル移動などのキー操作ができなくなっており、私としては不便さを覚えてしまいました。

ただ、不便さはあるものの、ファイルサイズが小さいため、Dockerでコンテナを構築する際などに良くshが使われる場面があるようです。

デフォルトシェルの確認方法

ログイン時に起動するシェルのことをデフォルトシェルと呼びます。
このデフォルトシェルがターミナルを起動した時に自動的に立ち上がるシェルになります。

# 確認コマンド
echo $SHELL
# 結果(デフォルトシェル)
/bin/sh

今回の仕様では、デフォルトシェルはshになっていました。

使用できるシェルの確認方法

では、自分の環境において、何のシェルが使用可能なのかを見てみます。
確認するには、/etc/shellsファイルを確認します。

# catコマンドを使用

cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

上記では、4つのシェルが利用可能のようですね。
この中で、デフォルトシェルがshに設定されているというわけです。

シェルを切り替えてみる。

シェルを切り替えるコマンドはこちら。

bash

すっごくシンプルです。
が、このbashを叩くことで、シェルをshからbashへ切り替える事ができます。

他のシェルへ切り替えたい場合には、切り替えたいシェルのコマンドを叩けば大丈夫です。
dash rdashなど。

現在使用しているシェルの確認コマンド

シェルを切り替えた時などに、自分がなんのシェルを使用しているかを確認するコマンドはこちら。

echo $0を使用する事で、現在のシェルを確認できます。
デフォルトシェルの確認とは別なので注意が必要です。

$ echo $0
-sh

$ bash

envader@172-19-1-2:~$
envader@172-19-1-2:~$ echo $0
bash

無事にシェルがshからbashへ切り替わっているのが見て分かると思います。

最後に切り替えたシェルから元のデフォルトシェルへ切り替えるには、exitコマンドを使用します。

envader@172-19-1-2:~$ echo $0
bash
envader@172-19-1-2:~$ exit
exit

$ echo $0
-sh

これでデフォルトシェルへ戻す事ができました。

まとめ

今回はEnvaderを利用して、

  • shとは何か?
  • shの特徴
  • デフォルトシェルの確認方法
  • 使用できるシェルがいくつあるのかの確認方法
  • シェルの切り替え方法

について学ぶ事ができました。

私個人的にはbashzshが超絶便利なことを再認識した学習になりました。
ただ、Dockerなどを使用する時には、ファイルの軽さからshを使うことを求められることがあるそうなので、shを扱う際には、タブ補完などができない事を頭に入れながら作業したいと強く思いました。

最後まで読んでいただきありがとうございました。

Discussion