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

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

$ iostat

Command 'iostat' not found, but can be installed with:

sudo apt install sysstat

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

1 ответ

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

Это работает в Bash из-за этого фрагмента в /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,

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

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