更改找不到命令时运行的 Ubuntu 程序

B. *_*rek 2 ubuntu apt-get

当我在 ubuntu 的 PATH 中输入未找到的命令时,我得到如下信息:

$ rdesktop
The program 'rdesktop' is currently not installed.  You can install it by typing:
sudo apt-get install rdesktop
Run Code Online (Sandbox Code Playgroud)

我相信这是一个查找 APT 档案并建议安装包的脚本。我想更改它,以便它让我可以在按下“y”时下载它。两个问题:

1)文件在哪里?

2)如果我只是以简单的方式添加安装行,它会抱怨我不是根用户并且会失败(因为它rdesktop是作为普通用户运行的)。我如何让它要求输入密码并使用它来获得 root 访问权限?

Pau*_*aul 6

当 bash 遇到找不到的命令时,它会查找名为 command_not_found_handle() 的函数并执行它。

在 ubuntu 下,这是在 /etc/bash.bashrc

默认情况下,它在 /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
    }
Run Code Online (Sandbox Code Playgroud)

sudo 部分回答了您问题的部分,但显然需要提示输入密码才能升级到 root 来进行安装。