2

Когда я набираю команду, не найденную в PATH в Ubuntu, я получаю что-то вроде этого:

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

Я считаю, что это скрипт, который просматривает архивы APT и предлагает установочный пакет. Я хотел бы изменить его так, чтобы он предлагал мне загрузить его по нажатию кнопки «у». Два вопроса:

1) Где находится файл?

2) Если я просто добавлю строку установки тривиальным способом, он будет жаловаться, что я не root и не получу доступ (потому что rdesktop был запущен как обычный пользователь). Как мне заставить его запросить пароль и использовать его для получения root-доступа?

1 ответ1

6

Когда bash встречает команду, которую не может найти, он ищет функцию с именем command_not_found_handle() и выполняет ее.

В Ubuntu это определяется в /etc/bash.bashrc

По умолчанию он запускает скрипт python в /usr/lib/command-not-found

Вы можете сделать это так, как вам нравится, и лучше всего это сделать в вашем собственном файле ~/.bashrc :

    command_not_found_handle() {
        echo -n "Do you want to install $1? [N/y] "
        read -N 1 REPLY
        echo
        if [[ $REPLY == [Yy] ]]; then
            sudo apt-get install -- "$1"
        fi
    }

Часть sudo отвечает на часть раздела вашего вопроса, но, очевидно, потребуется запросить пароль для эскалации в root для выполнения установки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .