Shell
Unixにおけるユーザーインターフェース
Shellを通して、カーネルに操作を依頼する
ユーザーは直接カーネルを触れない
カーネルをshellが取り囲んでる感じ
だからシェル(殻)なのね
terminal上で実行されたコマンドを解釈しカーネルに伝える
逆にカーネルから返ってきたものを解釈しterminalに返す
カーネル上に用意されているシステムコールをコマンドとして実行できる
カーネルの抽象
OSが変わっても同じshellを使えば同じ操作感で扱える
シェルがクラッシュした時に、カーネルに与える影響を小さくできる
アプリケーションもシェルの上にある感じなのか?
コマンドポチポチする時にshellを使ってカーネルとやりとりするのはわかるが、
他のアプリケーションを使っているときはどうなんだ?
アプリケーションがシステムコールを発行する?
ターミナルとは
もともとはコンピュータとユーザーのやりとりをするハードのことを指していた(?
それをエミュレートするものがターミナルエミュレータで、今ではそれのことをターミナルと呼ぶ
シェルとは異なるソフトウェア
シェル操作のための画面だけを提供する
Unix系のOSのシェルは、ユーザーがログインすると動き出す
ログインとは?って感じだな
ログインシェル
Shellの種類
#??
.bashrcと.bash_profileの違いは?
デフォルトのシェルを変更する
$ chsh -s /usr/local/bin/fish
fishに変える例
入っているシェルを確認する
$ bat /etc/shells
追加する
$ echo /usr/local/bin/fish | sudo tee -a /etc/shells
fishを追加する例
技術的には何が違う?
なんのために複数存在する?
「シェルを自作しよう」というと、何をすることを指す?
自作ターミナル
PATH
参考
シェル (shell)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
【10分でわかるかもしれない】シェル(shell)とは? | orizuru
http://www.cc.kyoto-su.ac.jp/~hirai/text/shell.html
https://ja.wikipedia.org/wiki/シェル