我正在修改其他人的一系列相互依赖的bash脚本,这些脚本具有许多脚本和资源文件的硬编码路径。我希望能够确定调用顶级脚本后引用的所有文件,脚本和命令的路径。理想情况下,我会获得列表完整路径,以及每个路径的引用位置。它有点像运行ldd,但是对于脚本。
有人知道这方面的技巧吗?
答案 0 :(得分:1)
您可以使用bash的-x
选项打印它正在执行的所有操作。这不会直接给你你想要的东西,但你可以通过自己的方式找到答案。查看下面以+
开头的行。
这实际上取决于你的意思"引用的所有文件":所有运行的子脚本,或者它们读取的配置文件,或者它们运行的数据文件也是吗?
~ $ cat test.sh
echo "In test2.sh"
. test2.sh
./test3.sh
~ $
~ $ cat test2.sh
echo "In test2.sh"
~ $
~ $ cat test3.sh
echo "In test3.sh"
~ $
~ $ bash -x ./test.sh
+ echo 'In test2.sh'
In test2.sh
+ . test2.sh
++ echo 'In test2.sh'
In test2.sh
+ ./test3.sh
++ echo 'In test3.sh'
In test3.sh