Linuxとコマンドラインの基礎
$ X=1
$ bash -c 'echo "[$X]"'
$ export X
$ bash -c 'echo "[$X]"'上のコマンドを順に実行したときの、2つの bash -c の出力の組み合わせとして、正しいものはどれか。
- A[] と [1]
- B[1] と [1]
- C[] と []
答えと解説を見る
正解:A. [] と [1]
「X=1」と代入しただけの変数はシェル変数で、そのシェルの中でしか使えず、起動した子プロセス(ここでは新しい bash)には渡りません。export を付けると環境変数になり、その後に起動する子プロセスに値が引き継がれます。そのため1つ目は []、2つ目は [1] になります。単一引用符で囲んでいるので、$X は親のシェルではなく、子の bash の中で展開されます。
- A. 正しい。export するまで、X は子プロセスに渡りません。
- B. 代入しただけのシェル変数は、子プロセスには引き継がれません。
- C. export の後に起動した子プロセスには、X の値が引き継がれます。