Загрузка...
Linux
Новости, статьи, обсуждения, - все что связано с GNU Linux, FreeBSD, OpenBSD, Sun Solaris, Mac OS X и другими системами. Если вы интересуетесь данной темой - добро пожаловать в сообщество.
     

command-not-found в zsh

06.05.12, 19:14
Автор ggg

Из коробки в bash в Ubuntu работает очень интересный функционал: если команда введенная пользователем не найдена - происходит поиск по доступным пакетам и предложение об установке:

ebaranov@li353-49:~$ gnome-terminal

The program 'gnome-terminal' is currently not installed. To run 'gnome-terminal' please ask your administrator to install the package 'gnome-terminal'

К сожалению для zsh такой функционал по-умолчанию отсутствует. Чтобы он появился необходимо проделать несколько простых шагов:

  1. устанавливаем пакет command-not-found
  2. добавляем строчку "source /etc/command_not_found_zsh" (без ковычек) в ~/.zshrc
  3. перезапускаем zsh

Комментарии

Хм, полезная фича.
Порылся в репозиториях Fedora и нашел пакет PackageKit-command-not-found. Однако сколько бы он не пытался, найти так ничего и не нашел. =(

аноним 8 мая 2012, 2:13
0

ну так наверное как в примере, кроме установки еще надо включить в rc

Не, в .bashrc ничего не надо добавлять. Там на уровне PackageKit все само выполняется.

а что должен был найти?

Ну, хотел увидеть что-то типа твоего The program ‘gnome-terminal’ is currently not installed. To run ‘gnome-terminal’ please ask your administrator to install the package ‘gnome-terminal’, но каждый раз получаю bash: $command: command not found… ($command – имя команды).

Вообще очень интересно… В пакете 3 файла:
/etc/PackageKit/CommandNotFound.conf – кофигурация command-not-found
/etc/profile.d/PackageKit.sh – скрипт который PackageKit должен выполнять каждый раз при попытке запуска команды
/usr/libexec/pk-command-not-found – исполняемый файл, который собственно и вызывается из PackageKit.sh выше.

Попробовал напрямую вызывать /usr/libexec/pk-command-not-found с именем команды и каждый раз получал одно и тоже:
$ /usr/libexec/pk-command-not-found emacs
bash: emacs: command not found…
$ /usr/libexec/pk-command-not-found vim
bash: vim: command not found…
$ /usr/libexec/pk-command-not-found man
bash: man: command not found…

Сработало только с ls, но результат был неожиданным:
$ /usr/libexec/pk-command-not-found ls
bash: ls: command not found…
Similar commands are::
‘lc’
‘lz’

может ты используешь не тот пакет?

установил Fedora,  проверил – оно реально не работает, в интернетах молчат, жуть

lor дал ответ почему ничего не работает: http://www.linux.org.ru/forum/general/7734760?lastmod=1336650914307#comment-7735623

Войдите, чтобы оставить комментарий