如果我在 Bash 中输入无效命令,我会得到:
$ asdf
asdf: not found
我一直认为“未找到”消息来自 Bash 在找不到您输入的命令时调用的后备可执行文件。这个可执行文件的名称和路径是什么?
答案1
按照 Rena 的回答,是的,这是一个功能——你也可以替换它!
此链接详细说明了如何操作。事实上,这篇文章很有趣。正好赶上愚人节!斯洛文尼亚命令任何人?
从链接文章中摘录的(供后人参考)这段代码片段是关于如何在.bashrc
openSUSE 平台上放置此功能:
command_not_found_handle() {
export TEXTDOMAIN=command-not-found
local cmd state rest
local -i pid ppid pgrp session tty_nr tpgid
# do not run when inside Midnight Commander or within a Pipe
if test -n "$MC_SID" -o ! -t 1 ; then
echo $"$1: command not found"
return 127
fi
# do not run when within a subshell
read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat
if test $$ -eq $tpgid ; then
echo "$1: command not found"
return 127
fi
# test for /usr/sbin and /sbin
if test -x "/usr/sbin/$1" -o -x "/sbin/$1" ; then
if test -x "/usr/sbin/$1" ; then prefix='/usr' ; else prefix='' ; fi
echo $"Absolute path to '$1' is '$prefix/sbin/$1', so running it may require superuser privileges (eg. root)."
return 127
fi
if test -n "$COMMAND_NOT_FOUND_AUTO" ; then
# call command-not-found directly
test -x /usr/bin/python && test -x /usr/bin/command-not-found && /usr/bin/python /usr/bin/command-not-found "$1" zypp
else
# print only info about command-not-found
echo -e $"If '$1' is not a typo you can use command-not-found to lookup the package that contains it, like this:\n cnf $1"
fi
return 127
}
答案2
它是bash
自己发出的。试试
strings `which bash` | fgrep found
答案3
经过进一步挖掘,发现它不是一个可执行文件,而是一个函数,Bash 中的 command_not_found_handle()。