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