Y a-t-il une différence intrinsèque entre une commande intégrée et une autre commande qui peut nommer la même chose?
par exemple. Les cométies sont-ils des produits "spéciaux"? ... Y a-t-il moins de frais généraux? .. Ou sont-ils simplement "construits"; Comme le tableau de bord de votre voiture?
... et existe-t-il une liste définitive (actuelle) de ces cométiches?
Il existe trois niveaux d'utilitaires intégrés:
certains utilitaires Faites vraiment partie de la coque comme langage de programmation, même si elles ne sont pas mots réservés . Ce sont des utilitaires de contrôle de contrôle (.
, :
, break
, continue
, return
, trap
, exit
, exec
, eval
), Utilitaires liés aux paramètres (set
, unset
, shift
, export
, readonly
, local
¹, typeset
¹), Utilities alias (alias
², unalias
²) et times
³. Ceux-ci (( spécial intégré Traitement spécial:
foo=bar utility
a une signification différente: c'est une attribution de paramètres ordinaire (c'est-à-dire équivalent à foo=bar; utility
), au lieu d'attribuer à l'environnement pendant la durée de l'utilité.Certains utilitaires ont besoin à mettre en œuvre à l'intérieur de la coquille car ils agissent sur les paramètres internes de la coque. Ceci comprend:
cd
, dirs
, pushd
, popd
;bg
, disown
, fg
, jobs
, wait
;builtin
, command
, hash
, read
, type
, ulimit
, umask
;fc
, history
, bind
.echo
, printf
, test
, true
, false
.Les coquilles avancées telles que Bash , ksh et ZSH ont généralement plus de construction, souvent pour mettre en œuvre des caractéristiques non standard (généralement pour l'interaction). Le manuel de chaque shell vous indiquera quelles commandes sont intégrées, bien que certaines coquilles ( ZSH , au moins) prennent en charge des modules de chargement dynamique chargés de manière dynamique.
¹ Inconnu de POSIX, mais spécial dans KSH et plusieurs autres obus.
[.____] ² Ordinaire à Posix, mais spécial dans KSH et plusieurs autres obus.
[.____] ³ Dans ksh
, times
est une enveloppe autour du time
Mot-clé: C'est un alias pour { { time;} 2>&1;}
. Notez que POSIX permet à time
d'être un utilitaire externe avec une analyse ordinaire ou un mot clé qui s'applique à un pipeline entier (ce qui est en ksh, bash dans ZSH).
Une intégrée est une commande fournie par la coque, plutôt que par un programme externe. Voici les listes de bash
's comités (ils sont également répertoriés dans la page Bash Man) et zsh
' S comités de construction . ksh
fournit une liste en exécutant builtin
.
Pour savoir si une commande particulière est une intégrée, vous pouvez exécuter type command
. Essayer type for
et type ls
Pour voir cela.
Chaque distribution et shell ont une collection différente de commandes VS Construits Shell Fonctions. En règle générale, l'idée est que les coquillages construisent les fonctions les plus courantes et les plus simples pour gagner du temps, de la rapidité et d'intégrer la volonté avec le reste de leur ensemble de fonctionnalités. Les frais généraux sont beaucoup plus bas car il n'est pas nécessaire de lancer un autre processus système. Cependant, il est possible de mélanger et de faire correspondre. Vous pouvez exécuter une coquille qui a une construisie pour quelque chose, mais que cette commande a également une commande sur votre système. Habituellement, la construction prendrait la priorité, mais vous pourriez contrôler cela.
Vous pouvez facilement savoir si une commande spécifique est une intégrée ou non en exécutant type mycommand
. La plupart des pages de Homme Shell ont également une liste de leurs produits.
Edit : Utilisez type
_ Pour savoir si une commande est intégrée, et si ce n'est pas which
pour savoir où il sera exécuté.