【LinuC/LPIC対策】exportコマンドとオプションの由来【Linux】

LinuC/LPIC対策

はじめに

Linuxのシェル(Bashなど)で変数を定義する際、その変数を現在のシェルだけでなく、そのシェルから起動する他のプログラム(子プロセス)でも利用可能にすることが重要になる場合があります。この「変数を環境変数として公開し、子プロセスへ引き継ぐ」役割を担うのが、**export**コマンドです。

LPICレベル1の試験では、ローカル変数と環境変数の違い、そしてその設定方法であるexportコマンドの理解が必須です。この記事では、exportコマンドの基本的な使い方から、コマンド名の由来、そしてLPIC対策として押さえるべきポイントまでを詳しく解説していきます。

exportコマンドの基本

まずは、exportコマンドの基本的な使い方と、よく使うオプションから見ていきましょう。

exportコマンドの書式

export [オプション] [変数名[=値]...]
  • ポイント:
    • 引数を付けずにexportと入力すると、現在エクスポート(公開)されている全ての環境変数が一覧表示されます。
    • 最も一般的な使い方は、export 変数名=値 または 変数名=値; export 変数名 の形式です。

主要オプション一覧

オプション意味補足
-f変数をエクスポートする代わりに、関数をエクスポートするfunction
-n指定した変数のエクスポート属性を解除するno-export
-pエクスポートされている全ての変数を表示する(書式付き)print

コマンド名の由来:なぜ「export」なのか?

exportコマンドの「export」は、英語で “輸出する”“持ち出す” という意味を持ちます。

Linuxのシェル環境におけるこのコマンドの役割は、文字通り、現在のシェル(親プロセス)で定義されたローカルな変数を、そのシェルの「外側」や「下層」(子プロセス)へ持ち出し、利用可能にすることにあります。

変数をシステム全体の実行環境に**公開(輸出)**する、という機能に由来して、exportという名前が付けられました。これにより、子プロセス(実行されるコマンドなど)は、親プロセスから引き継がれた変数(環境変数)を読み取って、その挙動を変更できるようになります。

各オプションの詳細と実践例

ここからは、exportコマンドの各オプションや、ローカル変数と環境変数の違いについて詳しく掘り下げていきます。

1. ローカル変数と環境変数の違い

変数は、exportされるかどうかで挙動が大きく異なります。

  • ローカル変数: MY_VAR="local" のように設定され、現在のシェル内でのみ有効。子プロセスには引き継がれない。
  • 環境変数: export MY_VAR された変数。現在のシェルと、そこから起動された全ての子プロセスに引き継がれる。

実践例: ローカル変数と環境変数の違い

ローカル変数の定義:

LOCAL_VAR="Hello Local"

環境変数の定義とエクスポート:

export ENV_VAR="Hello Environment" 
# または
EXPORT_VAR="Hello Export"; export EXPORT_VAR

子プロセスで確認:envコマンド(子プロセスとして実行される)を使って確認します。

env | grep "VAR" 

LOCAL_VARは表示されないことからENV_VARだけが子プロセスに引き継がれていることがわかります。

2. -n (no-export) オプション:エクスポート属性の解除

意味: 指定した変数のエクスポート属性を解除し、ローカル変数に戻します。変数の値自体は削除されません。この機能は**declare +xunset -v**コマンドと似ています。

実践例:

export -n ENV_VAR 
# ENV_VARはまだこのシェル内で使えるが、子プロセスには引き継がれない

※export -n ENV_VARのあとにenvコマンドを使用した確認で表示されなくなりました。

オプションの由来:「-nオプションのnは、no-export(エクスポートしない)の頭文字から来ています。一度エクスポートした変数を、再びローカルな状態に戻したいというニーズに応えるために導入されました。」

3. -p (print) オプション:エクスポート変数の表示

意味: 現在エクスポート属性が設定されている全ての変数を、シェルが解釈できる形式(例: export PATH="...")で表示します。

実践例:

export -p

オプションの由来:「-pオプションのpは、print(表示する)の頭文字から来ています。特に、設定ファイル(.bashrcなど)に書き出すために、コマンド形式で一覧を表示したい場合に便利です。」

LPIC対策としてのポイント

exportコマンドは、envコマンド、setコマンド、unsetコマンドと合わせて理解することが重要です。

コマンド役割永続性
export変数を環境変数として子プロセスに引き継ぐ現在のセッションとその子プロセス
env変数を一時的に設定してコマンドを実行実行中のコマンドのみ
set/unset変数(ローカル/環境変数)を設定/削除する現在のセッションに設定/削除

まとめ

今回は、変数を環境変数として子プロセスへ引き継ぐためのexportコマンドについて、その基本的な使い方からコマンド名の由来、そして主要オプションまでを詳しく解説しました。exportコマンドを理解することは、環境変数を介したプログラム間の通信や、シェルスクリプトの動作を制御するために不可欠です。

LPICレベル1の試験対策としては、ローカル変数との違い、そしてenvunsetコマンドとの使い分けをしっかりと押さえておきましょう。

コメント

タイトルとURLをコピーしました