Что показывает Вам пакет, который можно установить для получения команды?

Я заметил на других машинах Ubuntu, когда у Вас нет Знатока, и Вы пробуете mvn это говорит Вам устанавливать maven или maven2. Этого не происходит на моем xfce, как я включаю его?

2
задан 27 July 2015 в 01:28

2 ответа

Пакет, соответственно, называется command-not-found . Интеграция с bash для этого пакета является частью самого пакета bash, и если вы не изменили /etc/bash.bashrc, он должен работать, если у вас установлен этот пакет.

Если вы используете zsh, добавьте к /etc/zshrc:

. /etc/zsh_command_not_found
6
ответ дан 2 December 2019 в 01:28

ответ muru является правильным, что пакет называют command-not-found. Это в основном обеспечивает a python сценарий /usr/lib/command-not-found это на самом деле делает основное задание.

Но сообщения, что Вы входите в Ubuntu, на самом деле определяются функцией, которая на самом деле использует command-not-foundсвойства. Его названный command_not_found_handle и находится в /etc/bash.bashrc.

$ type -a command_not_found_handle 
command_not_found_handle is a function
command_not_found_handle () 
{ 
    if [ -x /usr/lib/command-not-found ]; then
        /usr/lib/command-not-found -- "$1";
        return $?;
    else
        if [ -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" 1>&2;
            return 127;
        fi;
    fi
}

Из-за вышеупомянутой функции мы получаем различные сообщения об ошибках в различных случаях:

$ svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion

$ foobar
foobar: command not found

Позволяет проверке:

$ /usr/lib/command-not-found svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion

$ /usr/lib/command-not-found foobar
foobar: command not found

Поскольку Вы не имеете command-not-found пакет включил, Вы в основном удовлетворяете следующий отрывок command_not_found_handle функция каждый раз:

printf "%s: command not found\n" "$1" 1>&2;
return 127;

Следовательно Вы получаете следующий каждый раз:

$ svn
svn: command not found

$ foobar
foobar: command not found

Короче говоря можно установить command-not-found пакет и затем добавляет, что функция (если не там уже) упомянула выше в файл /etc/bash.bashrc (для всех пользователей) или ~/.bashrc (для только Вас).

4
ответ дан 2 December 2019 в 01:28

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

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