![查找磁盘上 shell/bash 函数的位置](https://linux22.com/image/122484/%E6%9F%A5%E6%89%BE%E7%A3%81%E7%9B%98%E4%B8%8A%20shell%2Fbash%20%E5%87%BD%E6%95%B0%E7%9A%84%E4%BD%8D%E7%BD%AE.png)
如果我有这样的函数:
#!/usr/bin/env bash
function foo {
}
上面的函数位于 .bash_profile 或其他地方。
如果我使用which foo
它,它不会给我该命令在 shell 脚本中的位置。
有什么方法可以让我发现它的位置或者是grep
我最好的选择吗?
答案1
这个问题已经有答案了这里。因此,从这个事实可以得出两件事:
- 在在这里发布您的问题之前,您应该做更好的研究(但是,我们有时都会很懒)
- 有一个更好的技巧可以
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