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
иначе ты не сможешь!