Bash, как предложение установки в tcsh

В оболочке bash, если вы поместите некоторую команду, которая не установлена ​​в вашей системе, она выдает ошибку и также дает вам предложение по установке пакета. Например -

$ iostat Command 'iostat' not found, but can be installed with: sudo apt install sysstat

Мой личный фаворит - tcsh, но он не дает никаких предложений по установке пакета, в то время как некоторая команда не найдена. Как я могу получить предложение установки пакета (например, bash) в tcsh?

0
задан 15 May 2018 в 16:22

2 ответа

Магия работает из-за пакета command_not_found, который предоставляет функцию command_not_found_handle для bash и zsh.

Это работает в пакете из-за этого фрагмента в /etc/bash.bashrc ]

# if the command-not-found package is installed, use it if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then function command_not_found_handle { # check because c-n-f could've been removed in the meantime if [ -x /usr/lib/command-not-found ]; then /usr/lib/command-not-found -- "$1" return $? elif [ -x /usr/share/command-not-found/command-not-found ]; then /usr/share/command-not-found/command-not-found -- "$1" return $? else printf "%s: command not found\n" "$1" >&2 return 127 fi } fi

Существует также файл /etc/zsh_command_not_found, который вы можете использовать для получения этого поведения для zsh - здесь функция называется command_not_found_handler.

Из быстрой поиск, не кажется, что zsh включает такую ​​функцию, чтобы определить a command_not_found_handle. Так может быть и имя, другое, в этом случае вам просто нужно преобразовать фрагмент в bash и включить его в свой ~/.tcshrc, иначе вы не сможете!

0
ответ дан 17 July 2018 в 14:14

Магия работает из-за пакета command_not_found, который предоставляет функцию command_not_found_handle для bash и zsh.

Это работает в пакете из-за этого фрагмента в /etc/bash.bashrc ]

# if the command-not-found package is installed, use it if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then function command_not_found_handle { # check because c-n-f could've been removed in the meantime if [ -x /usr/lib/command-not-found ]; then /usr/lib/command-not-found -- "$1" return $? elif [ -x /usr/share/command-not-found/command-not-found ]; then /usr/share/command-not-found/command-not-found -- "$1" return $? else printf "%s: command not found\n" "$1" >&2 return 127 fi } fi

Существует также файл /etc/zsh_command_not_found, который вы можете использовать для получения этого поведения для zsh - здесь функция называется command_not_found_handler.

Из быстрой поиск, не кажется, что zsh включает такую ​​функцию, чтобы определить a command_not_found_handle. Так может быть и имя, другое, в этом случае вам просто нужно преобразовать фрагмент в bash и включить его в свой ~/.tcshrc, иначе вы не сможете!

0
ответ дан 20 July 2018 в 14:18

Другие вопросы по тегам:

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