![更改在找不到命令时运行的 Ubuntu 程序](https://linux22.com/image/1298477/%E6%9B%B4%E6%94%B9%E5%9C%A8%E6%89%BE%E4%B8%8D%E5%88%B0%E5%91%BD%E4%BB%A4%E6%97%B6%E8%BF%90%E8%A1%8C%E7%9A%84%20Ubuntu%20%E7%A8%8B%E5%BA%8F.png)
当我在 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 权限进行安装。