このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:組み込みコマンドか外部コマンドかを判断する:typeコマンド

環境変数

 Linuxシステムでの作業を効率化し、システム全体の動作をカスタマイズするためには、環境変数の理解が不可欠です。環境変数は、システム全体や個々のユーザーセッションに影響を与える設定情報を保持し、さまざまなプログラムやシェルから参照されます。

 ここでは、環境変数の基本的な概念と、その活用方法について解説します。シェル変数との違いや、環境変数がどのように外部コマンドに影響を与えるかを具体的な例を用いて説明します。これにより、環境変数を適切に設定し、システムの挙動を自分のニーズに合わせて最適化できるようになります。

環境変数とは

 シェルからはさまざまなコマンドを実行しますが、これらのコマンドは大きく分けて以下の2種類に分類されます。

  • 組み込みコマンド:シェル自体に内蔵されているコマンド。
  • 外部コマンド:ファイルシステム上に存在する実行ファイルとしてのコマンド。

コマンドの種類の判別

あるコマンドが組み込みコマンドか外部コマンドかを判断するには、typeコマンドを使用します。

例:setcp コマンドの種類を確認

user01@ubuntu:~$ type set
set はシェル組み込み関数です

user01@ubuntu:~$ type cp
cp は /usr/bin/cp です
  • set はシェルの組み込みコマンドであることがわかります。
  • cp/usr/bin/cp というファイルとして存在する外部コマンドです。

シェル変数と環境変数の違い

  • シェル変数:シェル内部で使用される変数であり、シェルの設定やカスタマイズに利用されます。しかし、これらの変数は外部コマンドから参照することができません。
  • 環境変数:シェルだけでなく、起動された外部コマンドからも参照できる変数です。これにより、外部コマンドでもシェルの設定を反映させることができます。

シェル変数は外部コマンドから参照できない

 シェル変数は、シェルの内部でのみ有効であり、外部コマンドからはその値を参照することができません。これは、外部コマンドがシェルの「外側」で実行されるためです。

環境変数は外部コマンドでも有効

 一方、環境変数は外部コマンドからも参照可能です。そのため、シェル上だけでなく外部コマンドでも設定を反映させたい場合に環境変数を利用します。

LANG 環境変数の例

 LANG 変数は、システムの言語やロケールを指定する環境変数です。この変数を設定することで、シェルや外部コマンドのメッセージ表示言語を変更できます。

LANG を設定して cat コマンドを実行

日本語ロケールに設定

cat コマンドのヘルプメッセージが日本語で表示されます。

user01@ubuntu:~$ LANG=ja_JP.UTF-8
user01@ubuntu:~$ cat --help
使用法: cat [オプション]... [ファイル]...
ファイル (複数可) の内容を結合して標準出力に出力します。
...(以下省略)...

英語ロケールに設定

cat コマンドのヘルプメッセージが英語で表示されます。

user01@ubuntu:~$ LANG=C
user01@ubuntu:~$ cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s) to standard output.
...(以下省略)...

環境変数が外部コマンドに与える影響

 この例では、cat --help の出力は bash ではなく cat コマンド自身が生成しています。cat コマンドは、起動時に LANG という環境変数の値を確認し、その設定に応じて表示する言語を切り替えています。

 多くのコマンドがこのように環境変数を参照して動作を変更します。適切に環境変数を設定することで、システム全体の挙動を自分のニーズに合わせることができます。

まとめ

  • 環境変数は、シェルだけでなく外部コマンドからも参照できる変数です。
  • シェル変数と環境変数の違いを理解し、適切に使い分けることが重要です。
  • LANG のような環境変数を設定することで、外部コマンドの表示言語や動作をカスタマイズできます。
  • 環境変数を活用して、システム全体の設定を一元管理し、効率的な作業環境を構築しましょう。