Linux 命令\u未\u发现\u处理程序在mac中不工作
所以我在我的.bashrc文件中有这个bash代码…我正在使用MacOSXYosemiteLinux 命令\u未\u发现\u处理程序在mac中不工作,linux,macos,bash,shell,command-line,Linux,Macos,Bash,Shell,Command Line,所以我在我的.bashrc文件中有这个bash代码…我正在使用MacOSXYosemite command_not_found_handle () { runcnf=1; retval=127; [ ! -S /var/run/dbus/system_bus_socket ] && runcnf=0; [ ! -x /usr/libexec/packagekitd ] && runcnf=0; if [ $runcnf
command_not_found_handle ()
{
runcnf=1;
retval=127;
[ ! -S /var/run/dbus/system_bus_socket ] && runcnf=0;
[ ! -x /usr/libexec/packagekitd ] && runcnf=0;
if [ $runcnf -eq 1 ]; then
/usr/libexec/pk-command-not-found $@;
retval=$?;
else
echo "lalalla";
retval=1;
fi;
return $retval
}
我以前在linux环境中使用过这段代码,它工作得很好……每当用户输入一个不存在的bash命令时,它都会默认回显“lalalal”……然而,当我在Mac OS X Yosemite上使用这段代码时,尽管我的.bashrc文件已正确注册,但它仍然无法工作(我已经执行了source~/.bash_配置文件
,我的.bash_配置文件包含代码source~/.bashrc
my.bashrc中存在的其他命令正在正常执行
我做错了什么?当用户输入mac中不存在的命令时,我如何使mac使用command\u not\u found\u句柄
更新
@tristan,所以我通过brew升级了bash,这在我运行输出的bash--version
时得到确认
GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
我做错了什么?
命令\u未找到\u句柄
被引入Bash版本4
默认情况下,OS X Yosemite附带bash-3.2
为了介绍这一点,您可以检查每个命令的退出代码,以查找退出代码127(“未找到命令”)然后向该函数追加一个调用。您可以通过检查前面命令的退出代码is 127并调用自定义的命令\u not\u found\u handle
函数(使用$?
和PROMPT\u命令),自己修补此行为
也就是说,如果我是你的话,我可能会通过(brew install Bash
或从安装来升级Bash
e、 g
我测试了您的脚本,因为它目前也在我的机器上:
bash-4.3$ source pillar.bash
bash-4.3$ a
lalalla
测试
source
-以交互方式编辑脚本,以确保它在您的计算机上是相同的。命令\u未找到\u句柄
已引入Bash版本4
默认情况下,OS X Yosemite附带bash-3.2
为了介绍这一点,您可以检查每个命令的退出代码,以查找退出代码127(“未找到命令”)然后向该函数追加一个调用。您可以通过检查前面命令的退出代码is 127并调用自定义的命令\u not\u found\u handle
函数(使用$?
和PROMPT\u命令),自己修补此行为
也就是说,如果我是你的话,我可能会通过(brew install Bash
或从安装来升级Bash
e、 g
我测试了您的脚本,因为它目前也在我的机器上:
bash-4.3$ source pillar.bash
bash-4.3$ a
lalalla
测试
source
-以交互方式编辑脚本,以确保它在您的计算机上是相同的。命令\u未找到\u句柄
已引入Bash版本4
默认情况下,OS X Yosemite附带bash-3.2
为了介绍这一点,您可以检查每个命令的退出代码,以查找退出代码127(“未找到命令”)然后向该函数追加一个调用。您可以通过检查前面命令的退出代码is 127并调用自定义的命令\u not\u found\u handle
函数(使用$?
和PROMPT\u命令),自己修补此行为
也就是说,如果我是你的话,我可能会通过(brew install Bash
或从安装来升级Bash
e、 g
我测试了您的脚本,因为它目前也在我的机器上:
bash-4.3$ source pillar.bash
bash-4.3$ a
lalalla
测试
source
-以交互方式编辑脚本,以确保它在您的计算机上是相同的。命令\u未找到\u句柄
已引入Bash版本4
默认情况下,OS X Yosemite附带bash-3.2
为了介绍这一点,您可以检查每个命令的退出代码,以查找退出代码127(“未找到命令”)然后向该函数追加一个调用。您可以通过检查前面命令的退出代码is 127并调用自定义的命令\u not\u found\u handle
函数(使用$?
和PROMPT\u命令),自己修补此行为
也就是说,如果我是你的话,我可能会通过(brew install Bash
或从安装来升级Bash
e、 g
我测试了您的脚本,因为它目前也在我的机器上:
bash-4.3$ source pillar.bash
bash-4.3$ a
lalalla
测试
source
-以交互方式调整脚本以确保它在您的计算机上是相同的。是否可以升级到bash版本4?此外,是否有一种替代命令\u not\u found\u handle的方法可以执行相同的操作?@pillarOfLight现在将其添加到我的答案中。您有选项:)是否可以升级到bash版本4?此外,是否有其他替代命令\u not\u found\u handle可以执行相同的操作?@pillarOfLight现在将此添加到我的答案中。您有选项:)是否可以升级到bash版本4?此外,是否有其他替代命令\u not\u found\u handle可以执行相同的操作?@pillarOfLight现在将此添加到我的答案中。您有选项:)是否可以升级到bash版本4?此外,是否有其他替代命令\u not\u found\u handle可以执行相同的操作?@pillarOfLight现在将此添加到我的答案中。您有选项:)次要备注:return$retval
错误:return
仅返回数值参数。次要备注:return$retval
错误:return
仅返回数值参数。次要备注:return$retval
错误:return
仅返回数值参数。次要备注:return$retval
错误:return
仅返回数值参数。