Почему \ n расширяется до n в bash?

Когда дело доходит до операции оболочки , я могу понять первый шаг, но второй шаг немного озадачивает меня. Вот мое понимание:

Во-первых, оболочка разбивается на слова и операторы, а затем выполняет согласно правилам кавычек. Вот некоторые из моих вопросов. Когда я выполняю:

$ \n bash: n: command not found 

Почему команда n: command not found ? not \n: command not found ?

 $ $'\n' bash: $'\n': command not found 

Почему он не выполняет цитирование ANSI-C?

Кстати, когда вход является файлом сценария, как он делится на слова и операторы? Строка за строкой или в целом?

Обратная косая черта цитирует следующий символ (см. QUOTING в man bash ). \n поэтому интерпретируется как n (и, будучи первым словом команды, это предотвратит расширение псевдонима, см. ALIASES в man bash ).

$'\n' интерпретируется как цитируемый ANSI-C. Баш просто использует ту же цитату, чтобы показать проблематичный характер. Вы можете получить ту же ошибку из

 ' ' 

что эквивалентно ему.

Процесс расщепления слов описывается в начале man bash . Если вы сомневаетесь, задайте более конкретный вопрос или проверьте исходный код .