Esse comando combina dois truques bem especiais ...
set -
Geralmente set
é usado para configurar as opções do shell (veja a página man do seu shell). Um caso especial é set --
. Isso é usado para definir os parâmetros posicionais. Infelizmente eu esqueci o que era isso, mas uma vez li sobre um problema que não poderia ser resolvido por outros meios.
$ (< arquivo)
$(command)
é a subsituição do comando: O shell coleta a saída no stdout e substitui $(command)
por essa saída ao executar a linha de comando. Se você precisar do conteúdo de um arquivo, poderá fazer isso: $(cat file)
. $(< file)
é apenas uma versão curta disso, salvando um processo desnecessário ( cat
).