過去問ドリル

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

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

bashで、exportしていないシェル変数も含めて、現在のシェルに定義されている変数を名前と値の一覧で表示したい。コマンドとして適切なものはどれか。

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

正解:D

解説

bashの組み込みコマンド set を引数なしで実行すると、現在のシェルに定義されているすべてのシェル変数(環境変数を含む)とシェル関数が表示されます。一方、env や printenv が表示するのは、子プロセスに引き継がれる環境変数だけです。そのため、exportしていないシェル変数を確認したいときは set を使います。出力が長いので、set | less や set | grep 変数名 のように絞り込むとよいでしょう。

選択肢ごとの解説

  • A誤り。env を引数なしで実行すると環境変数の一覧を表示しますが、exportしていないシェル変数は含まれません。
  • B誤り。printenv も環境変数だけを表示するコマンドで、exportしていないシェル変数は表示されません。
  • C誤り。export -p は、exportされている変数を declare -x の形式で一覧表示するもので、exportしていない変数は表示されません。
  • D正しい。引数なしの set は、exportの有無にかかわらず、シェルに定義されている変数をすべて表示します。
LinuCレベル1の問題を演習モードで解く