$ \time --version
time (GNU Time) UNKNOWN
Copyright (C) 2018 Free Software Foundation, Inc.
...
$ /bin/true --version
true (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
...
$ \true --version
$ echo 'nothing was printed on the previous line'
Estou usando Ubuntu 22.04, GNU bash, versão 5.1.16 (também testado com zsh 5.9).
No Bash
time
é uma palavra-chave (veja Recursostype time
) e\time
não é interpretada como tal.\time
faz o Bash executar um executável externo que no seu caso é GNUtime
.Mas
true
é um recurso interno (consulte Recursostype true
). O fato de você poder usar uma barra invertida para suprimir atime
palavra-chave (ou qualquer palavra-chave, por exemplo, try\if
) provavelmente o levou a pensar que pode usar uma barra invertida para suprimir um componente interno. Não,\true
ainda roda o builtin, não o GNUtrue
. É bastante evidente com\:
; ele executa o executável:
interno, não um executável externo:
que provavelmente não existe no seu sistema operacional (comparetype -a :
comtype -a true
; ou tenteenv :
).help true
descreve o built-in, não menciona opções.Parece que o builtin ignora todos os argumentos da linha de comando, não importa quais sejam. GNU
true
ignora todos os argumentos da linha de comando, a menos que haja exatamente um argumento e o argumento seja--help
ou--version
.No Zsh a história é basicamente a mesma.