シェルのshについてEnvaderで学んでみた。
どうも、kobakichiです。
今回も、Envader
を利用してLinuxについて学習したので、そのまとめと振り返りです。
Envader
とは何?という方のためにリンクを貼っておきますので、参考にどうぞ。
簡単に説明すると、Linux環境を環境構築なしですぐに学ぶことのできる、オンライン学習サービスです。
参考にさせていただいた記事一覧
【Linux】シェルってなに?!その内容から具体的な役割・機能まで徹底解説!
この記事で分かること
-
sh
とは何か? -
sh
の特徴 - デフォルトシェルの確認方法
- 使用できるシェルがいくつあるのかの確認方法
- シェルの切り替え方法
今回のディストリビューション環境
今回使用したディストリビューションは下記になります。
環境によって若干の違い があるかも知れませんので、その場合は適宜置き換えて考えてみてください。
# ディストリビューション
"Debian GNU/Linux 9 (stretch)
shとは
Bourne shell
の略。
Bシェルとも呼ばれる。
1977年、AT&Tベル研究所のスティーブン・ボーン氏が開発したシェル。
これまでにもシェルは存在していたが、シェルスクリプトに変数などが利用できるようになったのがこのBシェルが初めてで、利便性が向上されたシェル。
シェルの種類としては、他に
- bash
- zsh
- ksh
などが存在する。
上記のシェルについては詳細の説明は割愛します。
こちらの記事が参考になりました。
【Linux】シェルってなに?!その内容から具体的な役割・機能まで徹底解説!
ただ、bash
やzsh
の方が新しく開発されたシェルのため、sh
に比べてかなり便利になっているな、というのが私の印象です。
shの特徴
今回このシナリオを体験してみて強く感じたのが、sh
はbash
やzsh
に比べて、タブ補完や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
の特徴 - デフォルトシェルの確認方法
- 使用できるシェルがいくつあるのかの確認方法
- シェルの切り替え方法
について学ぶ事ができました。
私個人的にはbash
やzsh
が超絶便利なことを再認識した学習になりました。
ただ、Dockerなどを使用する時には、ファイルの軽さからsh
を使うことを求められることがあるそうなので、sh
を扱う際には、タブ補完などができない事を頭に入れながら作業したいと強く思いました。
最後まで読んでいただきありがとうございました。
Discussion