如何检索shell脚本中使用的所有工具

时间:2011-09-26 12:38:15

标签: linux shell

我有一堆shell脚本,它们使用了一些命令和其他工具。

那么有没有办法列出shell脚本正在使用的所有程序? 从源代码中检索依赖关系的方法。

4 个答案:

答案 0 :(得分:2)

你可以做的一种方法是在运行时。您可以使用-x选项在debug mode中运行bash脚本,然后解析它的输出。所有已执行的命令及其参数将打印到标准输出。

答案 1 :(得分:2)

使用sed将管道和$(转换为换行符,然后使用awk输出行的第一个单词(如果它可能是命令)。管道进入which以找到PATH中的主要命令词:

sed 's/|\|\$(/\n/g' FILENAME | 
awk '$1~/^#/ {next} $1~/=/ {next} /^[[:space:]]*$/ {next} {print $1}' | 
sort -u | 
xargs which 2>/dev/null

答案 2 :(得分:1)

虽然我没有一般解决方案,但您可以尝试两种方法:

  1. 您可以使用strace查看脚本执行的程序。
  2. 您可以在pbuilder环境中运行程序,看看哪些软件包丢失了。

答案 3 :(得分:0)

由于shell的动态特性,如果不运行脚本,则无法执行此操作。

例如:

TASK="cc foo.c"
time $TASK

即使在如上所述的这样简单的例子中,如果没有运行cc,这将很难确定。

在运行时,您可以检查由thiton(+1)和ks1322(+1)指出的调试输出sh -x myscript。您还可以使用strace之类的工具来捕获所有exec()个系统调用。