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.