Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 命令\u未\u发现\u处理程序在mac中不工作_Linux_Macos_Bash_Shell_Command Line - Fatal编程技术网

Linux 命令\u未\u发现\u处理程序在mac中不工作

Linux 命令\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

所以我在我的.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 -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
仅返回数值参数。