Linux - Shell Part2



 ◆ シェル変数と環境変数

 シェルがユーザとLinuxシステムとの対話を担うためにはユーザのログイン名やホームディレクトリ
 などのユーザ情報をあらかじめ保持している必要があり、この種のユーザ情報は
変数に保持されます。
 変数には
シェル変数環境変数の2種類があります。シェル変数と環境変数の違いは以下の通りです。

変数 説明
シェル変数  現在実行しているシェルの中だけで有効な変数。
環境変数

 現在実行しているシェルと、そのシェルで実行されたプログラムにも引き継がれる変数。
 環境変数は、シェル変数を
exportコマンドで定義して設定する。


 シェル変数と環境変数の違いを理解するために、先ず、変数の定義やそのコマンドについて解説します。



 ◆ 変数の定義とコマンド

 変数を定義するためには以下の構文を使用します。この構文を定義する際の注意点は以下の通りです。

 【構文】 変数名=値

 1. 「 = 」の前後にスペースを入力してはいけない
 2. 「変数名」の先頭文字に数字を使用してはいけない
 3. 「値」にスペースを入力する場合、「 "」 または 「 ' 」 で囲む
 4. 大文字と小文字は区別される

 ◆ 変数名を「CISCO」として、値を 「CCIE」とする設定例
 $ CISCO=CCIE


 ◆ 変数名を「 LPI 」として、値を「 Linux Professional Institute 」とする設定例
 $ LPI="Linux Professional Institute"


 ◆ echoコマンド

 echoコマンドは、指定した文字列や変数の値を出力できるコマンド。変数を出力する場合、変数名の先頭に
 $ マークを付けてコマンドを入力します。

 【構文】 echo 文字列
 【構文】 echo $変数名

 ◆ 文字列として「CentOS」と出力

 $ echo CentOS
 
CentOS


 ◆ 変数名の「 LPI 」を出力 ※ 事前に LPI="Linux Professional Institute" と定義していることが前提

 $ echo $LPI
 
Linux Professional Institute



 ◆ unsetコマンド

 定義した変数名は、unsetコマンドで削除できます。

 【構文】 unset 変数名

 ◆ 変数名の「 LPI 」の削除
 $ unset LPI



 ◆ setコマンド/envコマンド/printenvコマンド

 シェル変数と環境変数を確認するためには、setコマンドを使用します。設定済みの環境変数を一覧表示
 するためには、envコマンドやprintenvコマンドを使用します。

 ◆ setコマンドの実行 (シェル変数と環境変数の確認)
 $ set

 ◆ envコマンドの実行 (環境変数の確認)
 $ env

 ◆ printenvコマンドの実行 (環境変数の確認)
 $ printenv

 ◆ printenvコマンドの実行 (特定の環境変数を指定した場合、その値だけが表示される)

 $ printenv PATH
 /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/admin/bin




 ◆ exportコマンド

 exportコマンドにより、新たに起動したシェル(子供シェル)においても変数を参照できるコマンドです。
 exportコマンドの後に変数名を指定する入力だけでなくexportコマンドと変数定義を1行でも入力できます。

 【構文】 export 変数名
 【構文】 export 変数名=値

 ◆ 変数名の「LPI」をエクスポート ※ 事前に例えば LPI="Linux Professional Institute" のように定義していることが前提
 $ export LPI


 ◆ 変数名の「LPI」と値をエクスポート ※ 事前に変数名の定義の必要はなし
 $ export LPI="Linux Professional Institute"



     


主な環境変数 説明
PATH  コマンドやプログラムを検索するディレクトリの一覧
PWD  カレントディレクトリ
HOSTNAME  ホスト名
USER  現在のユーザー
LANG  ロケール(言語処理方式)
HOME  カレントユーザのホームディレクトリ
LOGNAME  ログインシェルのユーザ名
PS1  プロンプトの表示文字列
PS2  複数行にわたる入力時のプロンプト



 ◆ 環境変数PATH

 プロンプト上で実行するコマンドには
内部コマンド外部コマンドの2種類があります。内部コマンドは
 シェル自体に組み込まれているコマンド。外部コマンドとは独立したプログラムとして存在するコマンド。

 外部コマンドの場合、環境変数PATHに指定されたディレクトリを順に検索して見つけ出します。環境変数
 PATHに定義されていないコマンドを実行する場合は、最上位のディレクトリ( / )から始まる
絶対パス
 指定するか、カレントディレクトリ( . ) を基点として相対位置を表す相対パスを指定する必要があります。

 例えば、あるユーザの環境変数PATHが以下の結果である場合、/sbin のパスが記載されていません。


 $ echo $PATH
 
/usr/local/bin:/bin/:usr/bin


 このユーザで /sbin以下にある ifconfig コマンドを実行してもコマンドが存在しないエラーが出力します。
 ※ ifconfig のコマンド実行権限があれば
/sbin/ifconfig のように絶対パスを指定すれば実行できます。


 $ ifconfig
 
bash: ifconfigi command not found


 そこで、環境変数PATHにパスを追加するために以下の構文でコマンド設定を行います。以下のコマンド
 以外にも .bash_profileなどの環境設定ファイルを修正することでPATHの設定を修正することも可能です。

 【構文】 PATH=$PATH:追加ディレクトリ名

 ◆ 環境変数PATHに「/sbin」のディレクトリを追加する設定
 $ PATH=$PATH:/sbin



Linux 技術入門

Copyright(C) 2002-2024 ネットワークエンジニアとして All Rights Reserved