Quand est-ce que les jobs
commande émet le message jobs : not found
?
Aussi, pourquoi la commande man jobs
refuser d'afficher toute entrée pour la commande jobs
?
P.S. :Je suis capable d'exécuter avec succès les jobs
commande sur le terminal
Réponse acceptée :
jobs
n'est pas une vraie commande, mais une commande intégrée au shell que vous utilisez :
[email protected]:~$ type jobs
jobs is a shell builtin
Lorsque vous essayez de l'exécuter sans shell, vous obtenez un message d'erreur, car il n'y a pas d'exécutable binaire appelé jobs
.
Il n'a pas non plus de page de manuel car il s'agit simplement d'une fonction intégrée. Regardez dans man builtins
comme l'a dit Marco, dans man bash
ou dans la page de manuel du shell respectif que vous utilisez si vous n'utilisez pas bash
.
EDIT :pour expliquer ce que signifie exécuter un programme sans shell :lorsqu'un processus sous Linux veut lancer un autre processus (fork et exec), il peut soit envelopper ce processus dans un shell, soit le lancer directement sans shell. Par exemple, en perl
vous pouvez utiliser le system
fonction pour lancer un nouveau processus. Cela fonctionne bien avec de vrais fichiers de programme comme echo
(J'ai chargé les warnings
module ici aussi pour que nous puissions voir les messages d'erreur):
[email protected] ~ % ll /bin/echo
-rwxr-xr-x 1 root root 31K Jan 17 2013 /bin/echo*
[email protected] ~ % perl -Mwarnings -e 'system "echo", "test"'
test
Mais cela ne fonctionne pas avec un shell intégré comme jobs
, car il n'y a pas de fichier binaire jobs
:
[email protected] ~ % perl -Mwarnings -e 'system "jobs"'
Can't exec "jobs": No such file or directory at -e line 1.
Bien sûr, lorsque vous travaillez déjà dans un shell interactif, vous ne tomberez probablement pas sur ce problème. Mais cela est pertinent dans d'autres situations, par exemple lorsque vous utilisez Gnome Alt +F2 dialogue d'exécution. Il n'enveloppe pas votre commande dans un shell, et donc les vrais binaires fonctionnent bien, tout en essayant d'exécuter des jobs
affichera simplement un message d'erreur.
D'après votre message d'erreur d'origine jobs : not found
J'avais supposé que vous n'étiez pas dans un shell, car à l'intérieur d'un shell jobs
devrait bien sûr fonctionner correctement.