シェル・カーネル・環境変数・シェル変数
シェルとは
入力装置からユーザからの操作を受け付け、指示された動作をオペレーションシステム(OS)に伝達します。次に説明するカーネルと対話するための翻訳者のような役割です。
1 | 2 | 3 |
---|---|---|
CUI / CLI | Character User Interface / Command Line Interface | キーボードから文字の入力・表示を行う |
GUI | Graphical User Interface | マウス操作や画面タッチで操作する |
(狭義の)カーネルとは
OSの中枢として、各種アプリケーションが動作するための基本環境を提供しています。
そのままだと人間と対話することはできませんが、シェルを仲介して人間の指示を実行してくれます。
- ハードウェア関連の資源管理(メモリ管理やファイル管理)
- プログラムのプロセス管理
- 周辺機器のデバイス管理
(ちなみに)
1 | 2 |
---|---|
ハードウェア | CPU、メモリ、ハードディスク |
ソフトウェア | OS、各種ソフト、ファイル |
プロセスとは
起動している処理(プログラム・タスク)。
通常は、各プロセスの処理時間を利用したマルチタスキングを利用し、複数のプロセスを実行している。
(例)後述するbash上でコマンドAを実行する
→bashの子プロセスであるAのプロセスが生成され、該当の処理が行われると同時に、Aのプロセスは終了・破棄される
シェルスクリプトとは
スクリプトという名の通り、シェルが実行すべき(+実行できる)複数のコマンドを並べた「台本」です。
#!/bin/sh
echo 'Hello World!'
上記を実行するには、hello.sh
が保存されているディレクトリで、以下のコマンドを打ちます。
$ bash hello.sh
また、#!
から始まる一行目をshebang(シェバン)と呼び、スクリプトを読み込むインタプリタを指定しています。
例えば、world.py
はPythonで書かれたファイルですが、hello.sh
と同じように、シェル上でファイル名を指定することで、自動的にPythonインタプリタが起動されプログラムが実行されます。
#!/usr/bin/env python
print('Hello World!')
zsh、bashとは
zsh、bashはともに、上記で紹介したシェルの一種類です。
一般的には、bashがLinux系OSにおけるデファクトスタンダードとして認識されていますが、bashよりも更に使いやすいシェルとして人気を高めています。
zshの設定ファイルは.zshrc
、bashの設定ファイルは.bashrc
あるいは.bash_profile
です。
.bash_profileを覗いてみる
.bash_profile
export PATH=$HOME/pear/bin:$PATH
環境変数・シェル変数
export PATH=$HOME/pear/bin:$PATH
$HOME
や$PATH
は、環境変数やシェル変数と呼びます。
環境変数:前述したプロセスそれぞれが持つ変数です。
一つのプロセスが子プロセスを作ると、親プロセスが持つ環境変数は基本的にすべて子プロセスに引き継がれます。
シェル変数:上記の環境変数とは異なり、子プロセスには引き継がれない変数です。
ただし、Linuxが予め設定している組み込みの環境変数もあり、それらは特定のシェルに依存せず使用できます。例としては、以下のようなものがあります。
1 | 2 |
---|---|
$HOME | ホームディレクトリ |
$PATH | コマンドサーチパス、コマンドの実行ファイルが存在するパス |
export
export
は、環境変数やシェル変数を設定・変更するコマンドです。
export
することで、シェル変数は環境変数に引き継がれ、環境変数はその子プロセスへと引き継がれます。
シェル変数を設定するためには、
$ VAR=temp
上記で設定したシェル変数を、さらに環境変数として設定するためには、
$ export VAR
シェル変数設定+環境変数設定をまとめて行うには、
$ export VAR=temp
パスを通す?
いわゆる「パスを通す」さいは、新たなコマンドサーチパスを.zshrc
や.bash_profile
に追加します。
つい、以下のように記載したくなります($HOME
はホームディレクトリの環境変数)が、
export PATH=$HOME/xx/bin
ただしくは、
export PATH=$PATH:$HOME/xx/bin
あるいは
export PATH=$HOME/xx/bin:$PATH
になります。また、:$PATH
をパスの後ろに追加することで、該当のコマンドサーチパスの優先度が高くなります。
環境設定ファイルを変更したさいは
上記の作業などで.zshrc
や.bash_profile
を変更したさいは、ターミナルを再起動するか、以下を実行し変更内容が読み込まれるようにしましょう。
source ~/.bash_profile
参考文献
以下の記事を参考にさせていただきました!ありがとうございました!
Author And Source
この問題について(シェル・カーネル・環境変数・シェル変数), 我々は、より多くの情報をここで見つけました https://qiita.com/Y_eureka/items/b73d327dd5415e32bf7b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .