Bash
找不到命令句柄不適用於 url
我正在嘗試為 URL 連結設置 command_not_found_handle,
%> command_not_found_handle() { echo "OK"; } %> aaaaa OK %> http://www.google.com bash: http://www.google.com: No such file or directory
所以它適用於正常輸入,但不適用於 URL 連結,有什麼想法嗎?
URL 被視為包含子目錄。例如看到這個:
$ command_not_found_handle() { echo "OK"; } $ aaa OK $ aaa/bbb bash: aaa/bbb: No such file or directory $
也就是說,它在您執行命令時起作用,但是當您執行帶有斜杠的命令時,它可能會嘗試
bbb
在文件夾中執行aaa
。URL 也是如此 - 它認為它www.google.com
在目錄中執行命令http:
。從 bash 手冊頁:
如果名稱既不是 shell 函式也不是內置函式,並且不包含斜杠, bash 在 PATH 的每個元素中搜尋包含該名稱的執行檔的目錄。Bash 使用雜湊表來記住執行檔的完整路徑名(請參閱下面的 SHELL BUILTIN COMMANDS 下的雜湊)。僅當在雜湊表中找不到該命令時,才會對 PATH 中的目錄進行完整搜尋。如果搜尋不成功,shell 會搜尋一個已定義的名為 command_not_found_handle 的 shell 函式。如果該函式存在,則使用原始命令和原始命令的參數作為其參數呼叫它,並且該函式的退出狀態變為 shell 的退出狀態。如果未定義該函式,shell 將列印一條錯誤消息並返回退出狀態 127。
強調我的。