查找磁盘上 shell/bash 函数的位置

查找磁盘上 shell/bash 函数的位置

如果我有这样的函数:

    #!/usr/bin/env bash

    function foo {

    }

上面的函数位于 .bash_profile 或其他地方。

如果我使用which foo它,它不会给我该命令在 shell 脚本中的位置。

有什么方法可以让我发现它的位置或者是grep我最好的选择吗?

答案1

这个问题已经有答案了这里。因此,从这个事实可以得出两件事:

  1. 在在这里发布您的问题之前,您应该做更好的研究(但是,我们有时都会很懒)
  2. 有一个更好的技巧可以grep做你想做的事

因此,您可以在 PATH 中获取源文件和 shell 函数的行号,如下所示:(信用:这个答案

# Turn on extended shell debugging
shopt -s extdebug

# Dump the function's name, line number and fully qualified source file  
declare -F foo

# Turn off extended shell debugging
shopt -u extdebug

答案2

which只搜索路径。要查看 bash 实际执行的内容,请使用内置命令type

type foo

相关内容