LinuCレベル1 GNUとUnixのコマンド 問26
GNUとUnixのコマンド/コマンドラインの操作bashで、シェル変数 MYVAR を、そのシェルから起動する子プロセス(別のコマンドやシェルスクリプト)からも参照できるようにしたい。実行するコマンドとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「GNUとUnixのコマンド」に対応。実際の試験問題ではありません)
- Aset MYVAR
- Bunset MYVAR
- Cexport MYVAR
- Decho $MYVAR
正解:C
解説
シェル変数は、定義したシェルの中だけで有効で、そのままでは子プロセスに引き継がれません。export を使うとシェル変数が環境変数になり、そのシェルから起動した子プロセスにも値が渡されます。export MYVAR=value のように、代入と同時に環境変数にすることもできます。現在の環境変数の一覧は env や printenv で確認できます。
選択肢ごとの解説
- A誤り。bashで set MYVAR と実行すると、MYVARという文字列が位置パラメータ $1 に設定されるだけで、環境変数にはなりません。
- B誤り。unset は変数を削除するコマンドで、子プロセスから参照できるようにする働きはありません。
- C正しい。export でシェル変数を環境変数にすると、子プロセスにも値が引き継がれます。
- D誤り。echo $MYVAR は変数の値を表示するだけで、子プロセスへ引き継ぐ設定にはなりません。