このメモではGNU bash reference manual(https://www.gnu.org/software/bash/manual/bash.html)とminishel subject PDF(2025/8/15)をもとにminishellで実装すべきbashの仕様をまとめました。
bashのコマンドインタプリタとしての機能の再実装を目的としたプロジェクト。
メタ文字(今回対応すべきもの)
’\n’, ‘ ’, ‘\t’, ‘\n’, ‘|’, ‘<’, or ‘>’.
制御演算子(今回対応すべきもの)
‘||’, ‘&&’ or ‘|’
空白文字
空白文字(whitespace)とは、現在のロケールにおいて space 文字クラスに属する文字、または isspace() 関数が真を返す文字のことです
トークン
シェルによってひとつの単位と見なされる文字の並びです。
これは単語(word)か、または演算子(operator)のいずれかです。
空白文字や制御演算子で区切られ、構文解析前に作られる
フィールド
シェルの展開のいずれかの結果として得られるテキストの単位。 展開後、単語分割によって作られ、コマンドを実行する際には、この結果として得られたフィールドがコマンド名や引数として使われます。
以下参照(https://www.gnu.org/software/bash/manual/bash.html#Definitions-1)
以下PDFの引用部分より、サブジェクトPDFに言及されていないオプションや特殊文字による効果は実装しなくてよいものと解釈する。もちろんやってもよい。
Not interpret unclosed quotes or special characters which are not required by the subject such as \ (backslash) or ; (semicolon).