カーネルとシェルと環境変数とシェル変数
PCの起動時の流れや、環境変数についての理解が曖昧だったため、こちらでまとめさせていただきます
PCにログインするとログインした人のシェルができます(ログインした人のシェルプログラムが動くイメージ)
シェルというのは、[bash、zsh、tcsh、ksh]などの種類があり、自分のOSがどのシェルを使っているかは、下記コマンドのようにして確認できる
higmonta@higuchimiyukiyuunoMacBook-Pro 2563_higmonta_runteq_curriculum_advanced % echo "$SHELL"
/bin/zsh
シェルには、シェル変数や環境変数を格納できる
シェル変数: 同じシェルで動いている時に有効な変数
環境変数: 同じPC上で動いていれば使える変数
つまり、環境変数の方が使える範囲が広いということ
また、起動しているシェルから違うシェルを起動することができる
この時にシェル変数と環境変数で違いが出る
シェル変数で定義しているものは、今起動しているシェルから違うシェルを起動した時には、定義したシェル変数は使えない。
環境変数で定義しているものは、今起動しているシェルから違うシェルを起動しても定義した環境変数が使える。
シェル変数と環境変数でよく使うコマンドは、以下のようなもの
[シェル変数]
シェル変数の設定
$ 変数名 = 値
設定されているシェル変数の確認
$ set
シェル変数の確認
$ set | grep シェル変数名
[環境変数]
環境変数の設定
$ export 変数名 = 値
設定されている環境変数の確認
$ env
環境変数の確認
$ env | grep 環境変数名
[シェルとは]
まずLinuxのOSは、WindowsなどのOSと構造が違っています
LinuxのOSは、ユーザーがどのディレクトリも操作しやすいようになっているが、そのディレクトリの中には重要なファイルも含まれている為、Windowsとかと違って重要なファイルをユーザーが操作して壊してしまう可能性があります
重要なファイルを壊してしまわないようにする為に、シェルがあります
Linuxの場合は、カーネルというOSの核がありカーネルがデバイスへ命令(キーボードの入力など)している
このカーネルは、OSの核になり重要になってくるのでユーザーが操作して壊さないようにする為に、カーネルをシェルで包んでユーザーがカーネルに入れないようにしている。
ユーザーがデバイスへ操作(キーボードの入力など)した場合の流れは、以下のようになる
・ユーザーの操作
↓
・ユーザーの操作がシェルを通って、カーネルに伝わる
※シェルを通ってカーネルに伝わる時は、ただシェルを通るだけではなくユーザー側の言語からカーネルの機械語のような言語に変換もしている
[よく使う操作でのイメージ]
・ターミナルで以下コマンドを実施
ターミナルは、シェルスクリプトを実行できるアプリケーション
シェルスクリプトとは、シェルを操作するために使うプログラミング言語
$ mkdir test
↓
・上記コマンドでシェルにディレクトリを生成する命令をしている
↓
↓
[ポイント]
シェルである[zsh]ファイルの設定は、下記のようにホームディレクトリ以下にある隠しファイル[.zshrc]というファイルで設定する
higuchimiyukiyuunoMacBook-Pro:~ higmonta$ pwd /Users/higmonta higuchimiyukiyuunoMacBook-Pro:~ higmonta$ ls -a . .chromedriver-helper .nodenv .webdrivers Documents Postman .. .config .npm .wget-hsts Downloads Public .CFUserTextEncoding .gem .rbenv .yarnrc Gyazo 3.8.1 rubybook .DS_Store .gemrc .ruby-version .zsh_history HTML,CSS top.jpg .Trash .gitconfig .sqlite_history .zsh_sessions Library workspace .bash_profile.swp .lesshst .ssh .zshrc Movies .bundle .local .viminfo Applications Music .cache .node-version .vscode Desktop Pictures
higuchimiyukiyuunoMacBook-Pro:bin higmonta$ pwd /bin higuchimiyukiyuunoMacBook-Pro:bin higmonta$ ls [ cp dd expr launchctl mkdir pwd sleep test bash csh df hostname link mv rm stty unlink cat dash echo kill ln pax rmdir sync wait4path chmod date ed ksh ls ps sh tcsh zsh
参考記事:
シェル変数と環境変数の違いをコマンドラインで確認する - Qiita
https://wa3.i-3-i.info/diff333hensu.html