Tentei 'man echo' no Bash e ele me disse que 'echo --help' exibirá ajuda e sairá, e da mesma forma, que 'echo --version' produzirá a versão e a saída. Mas por que não funciona? 'echo --help' simplesmente imprime '--help' literalmente.
20
echo --help
é um bug . Imagine o que acontece se você fizer isso:printf "The option you entered is: " ; echo "$opt"
e a variável shellopt
passa a conter o texto--help
. De acordo com o padrão POSIX,echo
não é permitido que se comporte dessa maneira, mas o eco GNU é obnóxia e não está em conformidade.echo -e
eecho -n
também é um bug, pela sua lógica?Respostas:
man echo
refere-se aoecho
programa . O GNUecho
suporta uma--help
opção, assim como outras. Ao rodarecho
no Bash, você obtém o builtinecho
que não funciona.Para acessar o
echo
programa, e não o interno, você pode dar um caminho para ele:ou use o
enable
comando do Bash para desativar a versão interna:O Bash possui versões integradas de muitos comandos básicos, porque é um pouco mais rápido fazer isso, mas você sempre pode ignorá-los dessa maneira quando necessário.
fonte
zsh
.enable
funciona, no entanto.echo
em particular, tem muitas extensões acima do POSIX, e o Bash éecho
apenas algumas. Não há realmente um nome geral em que eu possa pensar em comandos que possam ser sombreados por componentes internos. Não são tantos que você precisa de um:echo
,test
,[
, epwd
são os que você é provável encontrar.command
explicitamente chama builtins sempre. Não sei o que estava pensando, a não ser quezsh
funcione de outra maneira.Além de outras respostas, você pode usar
consulte também uma breve ajuda para o
echo
comando interno.fonte
Você está usando o
echo
comando interno do bash, que não entende a--help
opção. Usar:Para ver a ajuda do built-in
echo
, useman bash
e pesquiseecho
.fonte