変数の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エクスポートされた変数は、ターミナルを閉じるとまだ消えてしまいます。次のレッスンでは、変数をセッション間で永続化する方法を説明します。
チャレンジ
簡単PROJECT という名前の変数を terminal-course という値でエクスポートし、次に env の出力をフィルタリングして新しい変数だけを表示することで、エクスポートされたことを確認します。
export を使用して変数を一度に設定・エクスポートし、その後 env を grep にパイプしてそれを見つけると、1行でこれを達成できます。
出力は次のようになるはずです:
PROJECT=terminal-courseヒント: まず
export PROJECT="terminal-course"を実行し、次にenv | grep PROJECTを使用して環境変数に表示されることを確認してください。
チートシート
export コマンドは、変数を子プロセス(現在のシェルから起動されるプログラムやスクリプト)で利用可能にします:
export MY_NAME="Alice"既存の変数もエクスポートできます:
MY_NAME="Alice"
export MY_NAMEexport なしでは、変数は現在のシェルのみで存在し、実行するスクリプトやプログラムからはアクセスできません。
変数がエクスポートされていることを確認するには、env の出力に表示されるか確認してください:
env | grep MY_NAMEエクスポートされた変数は、ターミナルを閉じると消えます。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。