grub
の設定方法を読みながら 、次の2つの構文のいずれかを使用する必要があると主張する記事に出くわしました。
echo \(hd0,0\) >> /boot/grub/grub.conf
または
echo '(hd0,0)' >> /boot/grub/grub.conf
コマンドラインでは、括弧は特別な方法で解釈されるためです。かっこの何が特別なのですか?それらはどのように解釈されますか?
承認された回答:
括弧はbashのサブシェルを示します。 man bash
を引用するには ページ:
(list) list is executed in a subshell environment (see COMMAND
EXECUTION ENVIRONMENT below). Variable assignments and builtin
commands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.
ここで、list
単なる通常のコマンドシーケンスです。
これは実際には非常に移植性が高く、bash
だけに固有のものではありません。 けれど。 POSIXシェルコマンド言語の仕様には、(compound-list)
に関する次の説明があります。 構文:
複合リストを実行します サブシェル環境で;シェル実行環境を参照してください。環境に影響を与える変数の割り当てと組み込みコマンドは、リストが終了した後も有効なままであってはなりません。