Wann funktioniert der jobs
Befehl gibt die Meldung jobs : not found
aus ?
Warum funktioniert auch der Befehl man jobs
weigern sich, einen Eintrag für den Befehl jobs
anzuzeigen ?
P.S. :Ich kann die jobs
erfolgreich ausführen Befehl auf dem Terminal
Akzeptierte Antwort:
jobs
ist kein echter Befehl, sondern ein Befehl, der in die von Ihnen verwendete Shell integriert ist:
[email protected]:~$ type jobs
jobs is a shell builtin
Wenn Sie versuchen, es ohne Shell auszuführen, erhalten Sie eine Fehlermeldung, da es keine ausführbare Binärdatei mit dem Namen jobs
gibt .
Es hat auch keine Manpage, weil es nur ein eingebautes ist. Sehen Sie in man builtins
nach wie Marco sagte, in man bash
oder in der Manpage der jeweiligen Shell, die Sie verwenden, wenn Sie bash
nicht verwenden .
BEARBEITEN:Um zu erklären, was das Ausführen eines Programms ohne Shell bedeutet:Wenn ein Prozess unter Linux einen anderen Prozess (fork und exec) starten möchte, kann er diesen Prozess entweder in eine Shell einschließen oder direkt ohne Shell starten. Zum Beispiel in perl
Sie können das system
verwenden Funktion zum Starten eines neuen Prozesses. Dies funktioniert gut mit echten Programmdateien wie echo
(Ich habe die warnings
geladen Modul auch hier, damit wir Fehlermeldungen sehen können):
[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
Aber das funktioniert nicht mit einer eingebauten Shell wie jobs
, weil es keine Binärdatei jobs
gibt :
[email protected] ~ % perl -Mwarnings -e 'system "jobs"'
Can't exec "jobs": No such file or directory at -e line 1.
Wenn Sie bereits in einer interaktiven Shell arbeiten, werden Sie natürlich nicht über dieses Problem stolpern. Dies ist jedoch in einigen anderen Situationen relevant, beispielsweise wenn Sie Gnome Alt verwenden +F2 Dialog ausführen. Es verpackt Ihren Befehl nicht in einer Shell, und daher funktionieren echte Binärdateien gut, während Sie versuchen, jobs
auszuführen wird nur eine Fehlermeldung angezeigt.
Aus Ihrer ursprünglichen Fehlermeldung jobs : not found
Ich hatte angenommen, dass man sich irgendwie nicht in einer Shell befindet, weil innerhalb einer Shell jobs
sollte natürlich funktionieren.