Quando fa i jobs
comando invia il messaggio jobs : not found
?
Inoltre, perché il comando man jobs
rifiuta di mostrare qualsiasi voce per il comando jobs
?
P.S. :Sono in grado di eseguire con successo i jobs
comando sul terminale
Risposta accettata:
jobs
non è un comando reale, ma un comando integrato nella shell che stai utilizzando:
[email protected]:~$ type jobs
jobs is a shell builtin
Quando provi a eseguirlo senza una shell, riceverai un messaggio di errore, perché non esiste un eseguibile binario chiamato jobs
.
Inoltre non ha una pagina di manuale perché è solo un built-in. Cerca in man builtins
come ha detto Marco, in man bash
o nella pagina man della rispettiva shell che stai usando se non stai usando bash
.
EDIT:per spiegare cosa significa eseguire un programma senza una shell:quando un processo in Linux vuole avviare un altro processo (fork ed exec), può avvolgere questo processo in una shell o avviarlo direttamente senza una shell. Ad esempio, in perl
puoi usare il system
funzione per avviare un nuovo processo. Funziona bene con file di programma reali come echo
(Ho caricato gli warnings
modulo anche qui in modo da poter vedere i messaggi di errore):
[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
Ma questo non funziona con una shell incorporata come jobs
, perché non esiste un file binario jobs
:
[email protected] ~ % perl -Mwarnings -e 'system "jobs"'
Can't exec "jobs": No such file or directory at -e line 1.
Ovviamente quando stai già lavorando all'interno di una shell interattiva, probabilmente non ti imbatterai in questo problema. Ma questo è rilevante in altre situazioni, ad esempio quando usi Gnome Alt +F2 finestra di dialogo di esecuzione. Non racchiude il tuo comando in una shell, e quindi i binari reali, funzionano bene, mentre si tenta di eseguire jobs
mostrerà solo un messaggio di errore.
Dal tuo messaggio di errore originale jobs : not found
Avevo pensato che in qualche modo non fossi in una shell, perché all'interno di una shell jobs
dovrebbe ovviamente funzionare bene.