fg
name__, bg
et jobs
sont utilisés pour la gestion des travaux. Et pour une raison quelconque (peut-être que c'est juste moi), je ne parviens pas à trouver l'emplacement de leurs fichiers binaires ni de leurs pages de manuel (whereis
n'imprime aucune information). which
ne donne aucun résultat. Les commandes elles-mêmes fonctionnent très bien, cependant.
J'ai exécuté des commandes telles que find /bin bg
, mais sans résultats. J'ai également lancé find / bg
pour lancer un large réseau.
Vous n'obtenez aucun fichier associé à ces commandes car il s'agit de Shell (bash
name__), et non de fichiers exécutables séparés (par exemple, fichiers binaires, scripts). En réalité, les fonctions intégrées de Shell sont compilées dans l'exécutable de Shell; si vous le souhaitez, vous pouvez vérifier le code source pour en être sûr. Comme which
ou whereis
ne cherche que des fichiers exécutables externes, vous ne recevez aucune sortie pour les fonctions intégrées.
Pour savoir si une commande est un alias ou une fonction intégrée ou un fichier externe, le meilleur moyen consiste à utiliser l'intégré type
name__:
$ type fg
fg is a Shell builtin
$ type bg
bg is a Shell builtin
$ type jobs
jobs is a Shell builtin
Notez également que votre commande find
n’est pas syntaxiquement correcte. La syntaxe correcte (la plus simple) est find /where/to/search -name 'name_to_search'
.
Notez également que peu de commandes sont implémentées à la fois en tant qu’exécutable autonome et en tant qu’exécutable autonome séparé. Pour de telles commandes, rappelez-vous toujours que la commande intégrée aura la priorité sur la commande externe. Ainsi, lorsque vous exécutez echo something
, le echo
intégré est exécuté. Si vous souhaitez exécuter l'exécutable binaire echo
name__, vous devez l'appeler de manière différente. Une solution consiste à utiliser le chemin d'accès complet à l'exécutable: /bin/echo something
.
Pour afficher toutes les versions disponibles d'une commande, exécutez type
avec l'option -a
:
$ type -a echo
echo is a Shell builtin
echo is /bin/echo
Pour obtenir de la documentation sur les fonctions intégrées de Shell, vous pouvez vérifier la man
name__page de bash
ou utiliser la commande help
(qui est une commande intégrée):
help jobs
Aussi, comme l'a souligné @terdon vous devez utiliser type
au lieu de which
name __ .
Ce sont des fonctions intégrées à Shell: vous pouvez obtenir des informations d'utilisation de base en tapant help fg
ou help jobs
à l'invite du shell bash ou des informations plus détaillées à partir de la page de manuel bash.
En ajoutant à la réponse de heemayl, il convient de souligner que fg
name__, bg
et jobs
doivent être intégrés dans le shell, car ils manipulent des structures de données dans le shell. mémoire et/ou l’état du noyau associé au processus du shell. Il ne serait pas possible d'écrire une commande externe faisant ce que fg
fait.
D'autres commandes qui doivent être construit en comprennent cd
name__, eval
name__, exec
name__, exit
name__, export
name__, history
name__, read
name__, set
name__, source
(alias .
), shift
name__, trap
name__, ulimit
name__, umask
et wait
name__. Votre shell peut avoir une liste plus longue, en fonction du nombre de fonctionnalités étendues implémentées. POSIX a une liste différente, mais qui se chevauche, d'utilitaires intégrés spéciaux " - Je ne sais pas pourquoi des choses comme break
et continue
comptent comme des commandes plutôt que des mots-clés de structure de contrôle, ou pourquoi POSIX ne ne considère pas des choses comme umask
must-build-in quand elles ne peuvent pas être implémentées autrement. (Vous pouvez écrire un programme appelé /bin/umask
appelé umask(2)
, mais cela ne modifiera le paramètre que pour lui-même, pas pour les processus ultérieurs créés par le shell, afin qu'il ne remplisse pas ses spécifications.)
fg
name__, bg
et jobs
ne sont pas des utilitaires distincts, mais ils font partie de bash
name __ (commandes intégrées au shell).
vous pouvez trouver plus d'informations à leur sujet dans le manuel bash en utilisant la commande
man bash
Ce sont des commandes intégrées à Shell. Il n'y a pas de binaire pour eux car ils font partie de Bash (ou du shell que vous utilisez).
Ils sont documentés par exemple dans page de manuel Bash (voir la section "Shell BUILTIN COMMANDS")