変数のexport
CoddyのTerminalジャーニー「基礎」セクションの一部 — レッスン 63/82。
MY_NAME="Alice" のように変数を設定した場合、その変数は現在のシェル内にのみ存在します。スクリプトを実行したり別のプログラムを起動したりしても、その変数からは利用できません。ここで export の出番となります。
export コマンドは、環境変数をすべての子プロセスで利用できるようにします。つまり、現在のシェルから起動されたプログラムやスクリプトがその変数にアクセスできるようになります。
export MY_NAME="Alice"既存の変数をエクスポートすることもできます:
MY_NAME="Alice"
export MY_NAMEどちらのアプローチでも同じ結果が得られます。変数はこの後に実行するすべてのコマンドに渡される環境の一部になります。
違いを確認するために、$MY_NAME を使用しようとするスクリプトを実行してみてください。
export がないと、スクリプトには何も見えません。export を付けると、スクリプトは値にアクセスできるようになります。
これが、PATH や HOME のようなシステム変数があらかじめエクスポートされている理由です。これらは実行するすべてのプログラムで利用できる必要があります。
変数が出力されているかどうかは、env の出力に表示されるか確認することで検証できます:
env | grep MY_NAMEエクスポートされた変数も、ターミナルを閉じると消失します。次のレッスンでは、セッション間で変数を永続化する方法について説明します。
チャレンジ
簡単値 terminal-course を持つ PROJECT という環境変数をエクスポート(export)し、env の出力をフィルタリングして新しい変数のみを表示することで、エクスポートされたことを確認してください。
export を使用して変数の設定とエクスポートを一度に行い、env を grep にパイプで渡すことで、これを1行で実行できます。
出力は次のようになる必要があります:
PROJECT=terminal-courseヒント: 最初に
export PROJECT="terminal-course"を実行し、次にenv | grep PROJECTを使用して環境変数に表示されることを確認します。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。