Когда делает каждый получает сообщение об ошибке “задания: не найденный”?

Я не уверен, что XDG_VTNR вовлекает, но этот сценарий работы для меня, поместите строку в ~/.bashrc

(Я делаю auto-X на tty3),

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty3 ]]; then exec startx; fi

Также определите "не работу", делает она работает, если Вы запускаетесь startx вручную? В противном случае исследуйте свой ~/.xinitrc сначала.

4
28.01.2014, 21:35
3 ответа

jobs не реальная команда, а команда, которая встроена к оболочке, которую Вы используете:

martin@dogmeat:~$ type jobs
jobs is a shell builtin

Когда Вы попытаетесь выполнить его без оболочки, Вы получите сообщение об ошибке, потому что нет никакого двоичного названного исполняемого файла jobs.

Это также не имеет страницы справочника, потому что это - просто встроенное. Заглянуть man builtins поскольку Marco сказал, в man bash или в странице справочника соответствующей оболочки, которую Вы используете, если Вы не используете bash.


Править: для объяснения, что означает запущение программы без оболочки: когда процесс в Linux хочет запустить другой процесс (ветвление и должностное лицо), это может или перенести этот процесс в оболочку или запустить его непосредственно без оболочки. Например, в perl можно использовать system функционируйте для запуска нового процесса. Это хорошо работает с реальные программные файлы как echo (Я загрузился warnings модуль здесь также, таким образом, мы видим сообщения об ошибках):

martin@martin ~ % ll /bin/echo 
-rwxr-xr-x 1 root root 31K Jan 17  2013 /bin/echo*
martin@martin ~ % perl -Mwarnings -e 'system "echo", "test"'
test

Но это не работает с оболочкой, встроенной как jobs, потому что нет никакого двоичного файла jobs:

martin@martin ~ % perl -Mwarnings -e 'system "jobs"'
Can't exec "jobs": No such file or directory at -e line 1.

Конечно, когда Вы уже работаете в интерактивной оболочке, Вы, вероятно, не споткнетесь эту проблему. Но это релевантно в некоторых других ситуациях, например, при использовании Gnome Alt+F2 выполненное диалоговое окно. Это не переносит Вашу команду в оболочку и поэтому реальные двоичные файлы, хорошо работает при попытке работать jobs просто покажет сообщение об ошибке.

Из Вашего исходного сообщения об ошибке jobs : not found Я предположил, что Вы находитесь так или иначе не в оболочке, потому что в оболочке jobs должен, конечно, хорошо работать.

7
27.01.2020, 20:47
  • 1
    Или help jobs если Вы находитесь на Bash. –  Joseph R. 28.01.2014, 19:46
  • 2
    я даже не знал о help, но с другой стороны, я использую zsh и это не поддерживает его:/ –  Martin von Wittich 28.01.2014, 19:55
  • 3
    @MartinvonWittich: Что Вы имеете в виду, когда Вы говорите When you try to run it without a shell ? –  crisron 28.01.2014, 20:11
  • 4
    Можно также использовать команду: type -a jobs. С оболочкой Bash можно получить доступ к отдельной справке команд с помощью help команда: help jobs. –  slm♦ 28.01.2014, 20:29
  • 5
    @crisron я добавил объяснение к своему ответу. –  Martin von Wittich 29.01.2014, 01:55

Я могу получить то сообщение об ошибке с:

$ ash -c $'Steve\rjobs\\ '
jobs : not found

ash на самом деле выводы:

ash: 1: Steve\rjobs : not found

Но на терминале, этом \r перемещает курсор в начало строки, и jobs: not found перезаписи ash: 1: Steve.

Кроме этого, Ваше сообщение об ошибке может предположить что, независимо от того, что попробовано выполниться jobs команда не могла найти его.

Существует a jobs встроенная команда во всех оболочках csh (где это произошло), POSIX и fish семейства. Это перечисляет задания, в настоящее время сохраняемые интерактивной оболочкой, таким образом, это не имеет никакого значения вне оболочки и реализовано как встроенная команда оболочки (см. данную документацию оболочки для соответствия jobs документация или спецификация POSIX).

Существует часто нет jobs управляйте как исполняемый файл (хотя POSIX действительно требует, чтобы было), и где там похож на Солярисе, он ничего не делает (как jobs a ksh напишите сценарий там, который называет ksh jobs встроенный, это просто сообщает о заданиях (так ни один) этого нового ksh оболочка, которая интерпретирует сценарий).

В тех системах, которые имеют нет jobs команда в файловой системе, управляет той попыткой выполниться jobs не вызывая оболочку для парсинга командной строки сообщил бы об ошибке:

$ perl -le 'exec "jobs" or die "jobs: $!"'
jobs: No such file or directory at -e line 1.
$ env jobs
env: jobs: No such file or directory
$ find . -prune -exec jobs \;
find: `jobs': No such file or directory
$ rc -c jobs
jobs not found

Те, которые действительно называют оболочку, успешно выполнились бы, но потому что они запустят новую оболочку, та оболочка не имела бы никакого задания для создания отчетов:

$ awk 'BEGIN {system("jobs")}'
$ expect -c 'system jobs'
$ perl -le 'exec "jobs || :" or die "jobs: $!"'
$ python -c 'import os; os.system("jobs")'
$ 
3
27.01.2020, 20:47

Какого возраста та книга? Оболочки Unix не всегда имели управление заданиями. Исходная Оболочка Bourne не сделала, и некоторое время это было характерно для этих 2 вариантов быть sh (Граница, никакое управление заданиями) и csh (управление заданиями). Ответ книги мог бы быть этим jobs будет not found когда Вы используете Оболочку Bourne.

Единственная оболочка я могу легко найти теперь без a jobs команда posh.

В zsh можно работать disable jobs во-первых, и затем jobs будет not found.

1
27.01.2020, 20:47

Теги

Похожие вопросы