La coque Watanabe a trois sortes de fonctions intégrées, décrites en détail dans son manuel. Toutes les commandes intégrées y sont également répertoriées, mais il faut en déduire que quelque chose est une commande intégrée "régulière" de l' absence de note indiquant que la commande est une "spéciale" ou une "semi-spéciale" intégré. Les fonctions intégrées standard ne sont pas marquées.
printf
est un tel intégré "régulier". En mode natif, il est toujours appelé, qu'il existe ou non une commande externe trouvée sous ce nom.
$ PATH = / usr / bin
$ printf
printf: cette commande nécessite un opérande
$ type printf
printf: un standard intégré dans / usr / bin / printf
$
$ PATH = /
$ printf
printf: cette commande nécessite un opérande
$ type printf
printf: un intégré standard (introuvable dans $ PATH)
$
Mais lorsque l' posixly-correct
option shell est définie, elle n'est intégrée que si la commande externe peut être trouvée sur le PATH
.
$ set --posixly-correct
$
$ PATH = / usr / bin
$ printf
printf: cette commande nécessite un opérande
$
$ PATH = /
$ printf
yash: aucune commande de ce type `printf '
$
Ceci est en fait conforme à ce que dit la spécification Unix unique, et le dit depuis au moins 1997.
Il diffère du shell Z, du shell 93 Korn, du shell Bourne Again et du shell Debian Almquist. Le shell Z, par exemple, documente que les intégrations régulières sont toujours trouvées, avant l'étape de recherche PATH
. Il en va de même pour le shell Debian Almquist. Et c'est ce que font tous ces shells, même s'ils sont invoqués comme sh
avec leurs options d'activation POSIX.
% / bin / exec -a sh zsh -c "PATH = /; type printf; printf"
printf est un shell intégré
zsh: printf: 1: pas assez d'arguments
% / bin / exec -a sh ksh93 -c "PATH = /; type printf; printf"
printf est un shell intégré
Utilisation: printf [options] format [string ...]
% / bin / exec -a sh bash --posix -c "PATH = / type printf; printf"
printf est un shell intégré
printf: usage: printf [-v var] format [arguments]
% / bin / exec -a sh tiret -c "CHEMIN = /; tapez printf; printf"
printf est un shell intégré
sh: 1: printf: utilisation: format printf [arg ...]
%
Cependant, ne fonctionne pas printf
quand il n'est pas sur le PATH
comportement du shell PD Korn, du shell Heirloom Bourne et du shell MirBSD Korn; parce qu'ils n'ont pasprintf
intégré en premier lieu. ☺
% / bin / exec -a sh `command -v ksh` -c" PATH = /; type printf; printf "
printf introuvable
sh: printf: introuvable
% / bin / exec -a sh `command -v oksh` -c" PATH = /; type printf; printf "
printf introuvable
sh: printf: introuvable
% / bin / exec -a sh `command -v jsh` -c" PATH = /; type printf; printf "
printf introuvable
sh: printf: introuvable
% / bin / exec -a sh mksh -c "PATH = /; type printf; printf"
printf introuvable
sh: printf: introuvable
% ksh -c "type printf; printf"
printf est un alias suivi pour / usr / bin / printf
utilisation: format printf [arguments ...]
% oksh -c "type printf; printf"
printf est un alias suivi pour / usr / bin / printf
utilisation: format printf [arguments ...]
% jsh -c "type printf; printf"
printf est haché (/ usr / bin / printf)
utilisation: format printf [arguments ...]
% mksh -c "type printf; printf"
printf est un alias suivi pour / usr / bin / printf
utilisation: format printf [arguments ...]
$
PATH
pour un incorporé régulier à exécuter - alors veuillez poser votre question à ce sujet.