過去問ドリル

LinuCレベル1 GNUとUnixのコマンド 問26

GNUとUnixのコマンド/コマンドラインの操作

bashで、シェル変数 MYVAR を、そのシェルから起動する子プロセス(別のコマンドやシェルスクリプト)からも参照できるようにしたい。実行するコマンドとして適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル1の出題範囲「GNUとUnixのコマンド」に対応。実際の試験問題ではありません)

正解:C

解説

シェル変数は、定義したシェルの中だけで有効で、そのままでは子プロセスに引き継がれません。export を使うとシェル変数が環境変数になり、そのシェルから起動した子プロセスにも値が渡されます。export MYVAR=value のように、代入と同時に環境変数にすることもできます。現在の環境変数の一覧は env や printenv で確認できます。

選択肢ごとの解説

  • A誤り。bashで set MYVAR と実行すると、MYVARという文字列が位置パラメータ $1 に設定されるだけで、環境変数にはなりません。
  • B誤り。unset は変数を削除するコマンドで、子プロセスから参照できるようにする働きはありません。
  • C正しい。export でシェル変数を環境変数にすると、子プロセスにも値が引き継がれます。
  • D誤り。echo $MYVAR は変数の値を表示するだけで、子プロセスへ引き継ぐ設定にはなりません。
LinuCレベル1の問題を演習モードで解く