Linux如何在脚本中查找所有可执行文件

时间:2018-03-09 16:08:41

标签: linux bash terminal

我正在编写一些我想要提供的bash脚本并且使用deb包。由于我需要列出包的依赖关系,我想找到脚本正在调用的所有可执行文件,并找到它们所属的包。

是否可以列出bash脚本调用的所有可执行文件?

修改

为了更好地澄清:说我的脚本是

#!/bin/sh
echo "hello"
cat file.txt | grep -v "STRING"
if [ -d $SOMEDIR ]; then
    ./something.sh
else
    ./something_else.sh
fi

我想分析这样的脚本的内容,输出应该是:

echo
cat
grep
./something.sh
./something_else.sh

(不管其他两个* .sh脚本调用的任何其他可能的可执行文件)

1 个答案:

答案 0 :(得分:1)

您可以通过strace运行脚本并检查调用的可执行文件

$ strace -qqfe execve ./script.sh

你会得到像

这样的东西
execve("./script.sh", ["./script.sh"], [/* 81 vars */]) = 0
[pid 27651] execve("/bin/grep", ["grep", "hello"], [/* 80 vars */]) = 0
...