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

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

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

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

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

1)该文件位于哪里?

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

答案1

当 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 权限进行安装。

相关内容