Kdy jsou jobs
příkaz vydá zprávu jobs : not found
?
Proč také příkaz man jobs
odmítnout zobrazit jakýkoli záznam pro příkaz jobs
?
P.S. :Jsem schopen úspěšně provádět jobs
příkaz na terminálu
Přijatá odpověď:
jobs
není skutečný příkaz, ale příkaz, který je zabudován do shellu, který používáte:
[email protected]:~$ type jobs
jobs is a shell builtin
Když se jej pokusíte spustit bez shellu, zobrazí se chybová zpráva, protože neexistuje žádný binární spustitelný soubor s názvem jobs
.
Nemá také manuálovou stránku, protože je to jen vestavěná. Podívejte se do man builtins
jak řekl Marco, v man bash
nebo v manuálové stránce příslušného shellu, který používáte, pokud nepoužíváte bash
.
EDIT:pro vysvětlení, co znamená spuštění programu bez shellu:když chce proces v Linuxu spustit jiný proces (fork a exec), může tento proces buď zabalit do shellu, nebo jej spustit přímo bez shellu. Například v perl
můžete použít system
funkci pro spuštění nového procesu. To funguje dobře se skutečnými programovými soubory, jako je echo
(Načetl jsem warnings
modul i zde, abychom viděli chybové zprávy):
[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
Ale to nefunguje s vestavěným shellem, jako je jobs
, protože neexistuje žádný binární soubor jobs
:
[email protected] ~ % perl -Mwarnings -e 'system "jobs"'
Can't exec "jobs": No such file or directory at -e line 1.
Samozřejmě, když už pracujete v interaktivním prostředí, pravděpodobně o tento problém nezakopnete. Ale to je relevantní v některých jiných situacích, například když používáte Gnome Alt +F2 spustit dialog. Nezabaluje váš příkaz do shellu, a proto skutečné binární soubory fungují dobře, když se pokouší spouštět jobs
zobrazí pouze chybovou zprávu.
Z vaší původní chybové zprávy jobs : not found
Předpokládal jsem, že nějak nejste v shellu, protože uvnitř shellu jobs
by samozřejmě mělo fungovat dobře.