如何确定bash脚本引用的所有文件



我正在修改别人的一系列相互依赖的bash脚本,这些脚本有很多指向脚本和资源文件的硬编码路径。我希望能够确定调用顶级脚本后引用的所有文件、脚本和命令的路径。理想情况下,我会得到一个完整的路径列表,以及每个路径被引用的位置。这有点像运行ldd,但对于脚本来说。

有人知道这个技巧吗?

您可以使用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

相关内容

  • 没有找到相关文章

最新更新