Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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处理程序不带斜杠_Linux_Bash - Fatal编程技术网

Linux 命令\u未找到\u处理程序不带斜杠

Linux 命令\u未找到\u处理程序不带斜杠,linux,bash,Linux,Bash,我在登录bashshell(Ubuntu 16中的4.3版)时遇到问题。我有一个功能: command_not_found_handler() { if [[ "$1" =~ any$ ]]; then echo "$1" fi } 当此命令以any结尾时,此函数应写回终端中写入的任何命令的内容 这很有效,除了在我使用/编写某些内容时,例如which/any。在这种情况下,我收到一个类似于以下内容的错误: bash: no such file or directory: wha

我在登录bashshell(Ubuntu 16中的4.3版)时遇到问题。我有一个功能:

command_not_found_handler() {
  if [[ "$1" =~ any$ ]]; then
    echo "$1"
  fi
}
当此命令以
any
结尾时,此函数应写回终端中写入的任何命令的内容

这很有效,除了在我使用
/
编写某些内容时,例如
which/any
。在这种情况下,我收到一个类似于以下内容的错误:

bash: no such file or directory: whatever/any
在函数中转义此
/
的任何尝试均无效(例如
如果[[“$1”=~/Any$]];那么
或者
如果[[“$1”=~\/Any$]];那么


如何使其与
/
符号一起工作?

命令\u未找到\u句柄
(无尾随
r
)仅在对给定命令的路径进行搜索后调用

当用户向命令传递显式路径时,不会发生此类搜索,这就是解释任何包含
/
的内容的方式


引述如下,并加上重点:

  • 如果名称既不是shell函数也不是内置函数,并且不包含斜杠,Bash将在
    $PATH
    的每个元素中搜索包含该名称的可执行文件的目录。Bash使用哈希表来记住可执行文件的完整路径名,以避免多次
    PATH
    搜索(请参阅中的哈希描述)。只有在哈希表中找不到命令时,才会对
    $PATH
    中的目录执行完全搜索。如果搜索不成功,shell将搜索名为
    命令\u未找到\u句柄的已定义shell函数
    。如果该函数存在,将使用原始命令和原始命令的参数作为其参数调用它,并且函数的退出状态将成为shell的退出状态。如果未定义该函数,shell将打印一条错误消息并返回127的退出状态

  • 文档的整个段落仅与开头列出的一组条件相关:命令不能是shell函数,不能是内置的,也不能包含斜杠。

    command\u not\u found\u handle
    (无尾随
    r
    )仅在对给定命令的路径进行搜索后调用

    当用户向命令传递显式路径时,不会发生此类搜索,这就是解释任何包含
    /
    的内容的方式


    引述如下,并加上重点:

  • 如果名称既不是shell函数也不是内置函数,并且不包含斜杠,Bash将在
    $PATH
    的每个元素中搜索包含该名称的可执行文件的目录。Bash使用哈希表来记住可执行文件的完整路径名,以避免多次
    PATH
    搜索(请参阅中的哈希描述)。只有在哈希表中找不到命令时,才会对
    $PATH
    中的目录执行完全搜索。如果搜索不成功,shell将搜索名为
    命令\u未找到\u句柄的已定义shell函数
    。如果该函数存在,将使用原始命令和原始命令的参数作为其参数调用它,并且函数的退出状态将成为shell的退出状态。如果未定义该函数,shell将打印一条错误消息并返回127的退出状态

  • 文档的整个段落仅在开头列出的一组条件中相关:命令不能是shell函数,不能是内置的,也不能包含斜杠。

    这不是一般斜杠或
    [[]
    的限制,这是命令_not _found _处理程序函数工作方式的一个限制。在if条件之前,您不能删除$1中的斜杠吗?@dganesh2002,如果有/,则根本不调用该函数,因此这是一个相当没有意义的例子。这是一个孤立的例子吗?我的意思是:在代码上乱跳,在下面调用函数,还是在更大的脚本中发生?我无法复制它。@alagner,
    命令\u not\u found\u handle
    是交互式shell功能,因此不需要shebang,也不需要显式调用。这不是一般的斜杠限制,也不是
    [[]]
    限制,这是命令_not _found _处理程序函数工作方式的一个限制。在if条件之前,您不能删除$1中的斜杠吗?@dganesh2002,如果有/,则根本不调用该函数,因此这是一个相当没有意义的例子。这是一个孤立的例子吗?我的意思是:在代码上乱跳,在下面调用函数,还是在更大的脚本中发生?我无法复制它。@alagner,
    命令\u未找到\u句柄
    是交互式shell功能,因此不需要shebang,也不需要显式调用。