Relendo sua pergunta novamente Acho que entendi o que você está perguntando.
Tudo o que você digitar no prompt de comando é interpretado por um shell subjacente (se você não alterou, Bash).
Há várias etapas que o Bash realiza antes de executar o comando:
% bl0ck_qu0te% Tudo o que for deixado à direita do comando delimitado por qualquer sequência dos separadores contidos em $IFS
, geralmente ,
\t
e \n
depois que o Bash passou pelas etapas descritas acima, é interpretado como um argumento para o programa: sem ser técnico, isso significa que cada token é disponibilizado para o programa, que pode utilizá-lo da maneira que quiser.
Mais especificamente, o que acontece sob o capô é que cada token é passado como um argumento para o execve()
syscall que inicia o programa e se torna disponível para o programa por meio de argv
(um ponteiro para um ponteiro para um caractere frequentemente incluído na declaração / definição de main()
), que o programa pode acessar para recuperar os argumentos.