我在专有服务器上;我对此一无所知。我们经常使用bash函数来描述服务器但是如果我编写一个使用该函数的bash脚本它将无法工作。
所以我想在脚本中加载原始源文件。除了“强力”搜索方法之外,还有办法确定源文件的位置吗?如果我type -a thefunction
我可以看到定义,但不能看到它的来源。
答案 0 :(得分:1)
此信息不易获得。可能有帮助的是启动一个启用了调试(set -x)的交互式登录shell。这将详细向您展示源过程。
bash -ilx
当我发起像这样的bash shell时,我会看到如下内容:
+++ . /etc/bash_completion.d/dd
++++ have dd
++++ unset -v have
++++ PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/usr/local/sbin
这告诉我什么时候。 / etc / bash_completion / dd来源,修改了PATH(或者可能重新设置为相同的值)。
答案 1 :(得分:0)
查看http://wiki.bash-hackers.org/scripting/debuggingtips/
的'使xtrace更有用'部分我尝试在我的脚本的顶部附近添加以下内容,看起来它给出了函数调用的文件名/行号。
set -x
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
我使用bash 4.1.2在CentOS 6.2主机上进行了测试