Whats the difference in how these are used?
Isso depende inteiramente do programa, porque ...
Does the command-line tool decide how to determine them differently, or does Linux know they all mean the same thing, but feeds them to the application differently?
... os argumentos para o processo entram como uma matriz de strings individuais.
Há duas coisas envolvidas aqui: uma é o shell, que analisa a entrada que você digita e executa o processo. Isso, por exemplo, divide a string no espaço em branco e passa para widget
. Veja, por exemplo, man sh
e man bash
para detalhes sobre como eles lidam com essas coisas.
Por fim, no entanto, widget
obtém o argumento -fizz
ou --fizz
exatamente como está escrito, como uma string. Decide o que fazer com isso.
Existem alguns padrões - muitas variantes de getopts
e popt
que processam esses argumentos para widget
e têm algum grau de comportamento "padrão".
Nada impede o autor de widget
de inventar seu próprio padrão.
Então, finalmente, se você for o autor de widget
ou modificar o código-fonte, você pode absolutamente fazer com que ele trate #f#
como o argumento fizz
. Você não pode fazer isso sem mudar o programa.