Contraste:
% whence -a print
print
% whence -a echo
echo
/bin/echo
Isso mostra que print
existe apenas como um built-in, enquanto echo
existe como um built-in e um executável. (Na verdade, seguindo o que foi mostrado acima, print
e echo
podem ser aliases, funções ou palavras reservadas; use whence -w
para ver precisamente que tipo de objeto interno um nome representa.)
find
é um comando externo, portanto não pode invocar nenhum shell embutido. Se você realmente precisar invocar os built-ins do seu shell, invoque um shell explicitamente:
find . -name filename -exec zsh -c 'print "$0"' '{}' \;
Nesse caso, não acredito que você queira que o print
de zsh esteja incluído: find
' -print
primary fará o trabalho, apenas de forma adequada (o zsh print
incorporado expande as barras invertidas) .
find . -name filename -print
(Você pode até mesmo deixar de fora o -print
aqui, porque -print
é a ação padrão para find
quando nenhuma ação é especificada.)
A razão pela qual existe um executável externo echo
, mas nenhum chamado print
é que echo
é um comando padrão, portanto, ele fornece máxima disponibilidade até mesmo para programas que desejam invocá-lo sem passar por um shell. Em contraste, print
é específico de zsh, portanto, somente os scripts zsh o usam em primeiro lugar.
(Ah, e no meu sistema, há um comando print
, que envia arquivos para a impressora.)