Existe apenas uma divisão de palavras, e ocorre após expansão de chave, expansão de til, expansão de parâmetro e variável, substituição de comando e expansão aritmética, mas antes da expansão do nome do caminho.
(Dica: a divisão word divide as palavras em mais palavras. Você está confundindo a divisão de palavras com a divisão inicial da linha de comando em tokens.)
-
Primeiro, a linha de comando é dividida em palavras (ou "tokens") separadas pelos metacaracteres
|
,&
,;
,(
,)
,<
,>
, < space > e < tab >. -
Em seguida, as palavras que representam a linha de comando são analisadas em listas, pipelines e comandos simples.
-
Expansões acontecem quando cada comando simples é considerado para execução.
-
Após completar a expansão da chave, expansão do til, expansão de parâmetros e variáveis, substituição de comandos e expansão aritmética, o shell passa pelos resultados sem aspas das expansões e os divide em palavras, desta vez separados pelos caracteres em
$IFS
( não os metacaracteres que foram usados para dividir a linha de comando). -
Finalmente, o shell passa novamente pela lista de resultados de expansão sem aspas e executa a expansão do nome do caminho.
-
Leia todos os detalhes da especificação POSIX da linguagem de comandos shell . (O POSIX descreve um shell um pouco mais simples; o Bash implementa algumas extensões, mas deve ser fácil ver como elas se encaixam.)
Para responder a pergunta conforme solicitado: a divisão inicial da linha de comando em tokens separados por metacaracteres do shell; A divisão de palavras divide os resultados da expansão em palavras separadas por caracteres em $IFS
.