-
A principal diferença é que, ao ler do terminal, o shell exibe prompts. Caso contrário, não há diferença
$ echo ls > script $ bash script script $ bash -c ls script $ ls script
O shell sabe se ele está sendo executado de forma interativa, e alguns comandos podem se comportar de maneira diferente com base nisso também.
-
Sim, é uma coisa comum. argumentos para uma string preenchem seus parâmetros posicionais. Pesquise por
$@
e$1
,$2
etc. emman bash
.Veja ARGUMENTOS, FUNÇÕES e ALIASES em
man bash
. Em resumo, quando você executacommand1 arg1 arg2
, o bash primeiro tenta expandir o aliascommand1
e executar o resultado, ou executar uma funçãocommand1
, e se mesmo isso não for possível, ele tenta encontrar o comando em seu$PATH
.