コマンドライン
-CentOS- | -Ubuntu-

変数

下記のような目的でシェル上で変数を利用でする。

  • システムの挙動を変更する。
    システムに用意されている定義済みの変数を使う。
  • コマンド構文内やシェルスクリプト内で何度も使う値を参照する。
    前提として、変数名と値を定義して使う。

主な定義済みの定数

定数名 用途
LANG 利用している言語、文字コード(ロケール情報)。
PATH コマンドの実行ファイルの格納先。
PS1 プロンプトに表示する内容。
SHELL 現在利用しているシェル。

 

指定した文字列を出力する

「echo」コマンド

書式
echo [オプション] 文字列
主なオプション名 説明
-n 改行をしないで文字列を出力する。
文字列 画面上に表示する文字列。
[$変数名]を指定すると、変数内に格納されている値を出力する。

 

変数に格納されている値を参照する

書式
echo $変数名

ロケール情報を参照する(CentOS)

[user@host ~]$ echo $LANG
ja_JP.UTF-8

ロケール情報を参照する(Ubuntu)

user@host:~$ echo $LANG
ja_JP.UTF-8

 

変数に値を定義する

書式
変数名=値

英語を利用するように変更する(CentOS)

[user@host ~]$ ls 1234
ls: 1234 にアクセスできません: そのようなファイルやディレクトリはありません
[user@host ~]$ LANG=C
[user@host ~]$ echo $LANG
C
[user@host ~]$ ls 1234
ls: cannot access 1234: No such file or directory

英語を利用するように変更する(Ubuntu)

user@host:~$
ls: ‘1234’ にアクセスできません: そのようなファイルやディレクトリはありません
user@host:~$ LANG=C -1-
user@host:~$ echo $LANG
C
user@host:~$ ls 1234
ls: cannot access ‘1234’: No such file or directory
  1. 変数名と値を「=」で結ぶときには余計なスペースを入れない。
    ○変数名=値
    ✕変数名 = 値

 

定義済みの変数の値について

定義済みの変数の値はシェル起動時に読み込まれるため、端末(Terminal)を一度閉じてからまた開くと元の値に戻る。

起動時に読み込まれる変数の初期設定を変更するにはシェルの設定ファイルを編集シなければならない。

また、特定のコマンドのみ変数の値を変更した状態で実行したいときは、「変数名=値 実行コマンド」で可能になる。

変数名=値 実行コマンドで実行する(CentOS)

[user@host ~]$ LANG=C ls 1234
ls: cannot access 1234: No such file or directory
[user@host ~]$ ls 1234
ls: 1234 にアクセスできません: そのようなファイルやディレクトリはありません -1-
  1. シェル設定は初期設定の日本語環境に戻る。

変数名=値 実行コマンドで実行する(Ubuntu)

user@host:~$ LANG=C ls 1234
ls: cannot access ‘1234’: No such file or directory
user@host:~$ ls 1234
ls: ‘1234’ にアクセスできません: そのようなファイルやディレクトリはありません -1-
  1. シェル設定は初期設定の日本語環境に戻る。

 

PATH変数

PATH変数にはコマンドの実行ファイルの格納先ディレクトリが値として格納されている。

シェル上のプロぷとに文字列が入力されたとき、コマンドとして解釈しPATHで指定されたディレクトリを検索する。

PATH変数を参照する(CentOS)

[user@host ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/username/.composer/vendor/bin:/home/username/.local/bin:/home/username/bin
  1. /usr/bin(システム全体で一般的に利用されるバイナ)が登録されている。
  2. /bin(シングルユーザモードでも利用できるバイナリ)は登録されていない。
[user@host ~]$ ls -1-
test file.txt
[user@host ~]$ /usr/bin/ls -2-
test file.txt
[user@host ~]$ /bin/ls -3-
test file.txt
  1. /bin/に格納されているlsコマンドの実行ファイルを実行する。
  2. /usr/bin/を指定してlsコマンドの実行ファイルを実行する。
  3. /bin/を指定してlsコマンドの実行ファイルを実行する。

PATH変数を参照する(Ubuntu)

user@host:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
  1. /usr/bin(システム全体で一般的に利用されるバイナ)が登録されている。
  2. /bin(シングルユーザモードでも利用できるバイナリ)が登録されている。
user@host:~$ ls -1-
test file.txt
user@host:~$ /usr/bin/ls -2-
test file.txtbash: /usr/bin/ls: そのようなファイルやディレクトリはありません
user@host:~$ /bin/ls -3-
test file.txt
  1. /bin/に格納されているlsコマンドの実行ファイルを実行する。
  2. /usr/bin/を指定しては実行できない。lsの実行ファイルがないため。
  3. /bin/を指定してlsコマンドの実行ファイルを実行する。

 

PATHにディレクトリを追加する

PATHにディレクトリを新しく追加しても、端末(Terminal)を開き直すと元のPATHに戻る。

書式
PATH=$PATH:/追加するディレクトリ名
$PATH その時点で設定されているPATHの内容が読み込まれる。

PATH=$PATHの実行(CentOS)

[user@host ~]$ PATH=$PATH:/dir
[user@host ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/tatchinadmin/.composer/vendor/bin:/home/tatchinadmin/.local/bin:/home/tatchinadmin/bin:/dir
  1. /dirディレクトリが追加されている。

PATH=$PATHの実行(Ubuntu)

user@host:~$ PATH=$PATH:/dir
user@host:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/dir
  1. /dirディレクトリが追加されている。

 

シェル変数と環境変数

変数にはその適用範囲によって、シェル変数と環境変数の2種類がある。

  1. シェル変数
  • シュル変数は子プロセスに変数の内容が引き継がれない。
  • 変数を新しく定義したとき、シェル変数として定義される。
 
  1. シェル変数
  • 環境変数は子プロセスに環境変数の内容が引き継がれる。
  • 環境変数として定義するには「export」コマンドを使う。

シェル変数と環境変数の適用範囲

シェル変数と環境変数の適用範囲

変数に関するコマンド構文

シェル変数 環境変数
設定 変数名=値 export 変数名|export 変数名=値
一覧表示 set env
削除 unser 変数名 unset 変数名

指定したシェル変数を環境変数としてエクスポートする

「export」コマンド

書式
export 変数名[=値]
変数名 エクスポートする変数名を指定する。
シェル変数として礼儀されていないものを指定するとき、
値も一緒に指定して、変数の定義を行うことができる。

定義済みの変数と値、関数などを一覧表示する

「set」コマンド

書式
set [オプション]
オプション 有効、無効にするシェルのオプションを指定する。

定義済みの環境変数と値を一覧表示する

「env」コマンド

書式
env

定義済みの変数を削除する

「unset」コマンド

書式
unset 変数名
変数名 削除する変数名を指定する。

 

参照元情報

LinuCレベル1 合格教本
LinuCレベル1 合格教本