我正在编写一些我想要提供的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脚本调用的任何其他可能的可执行文件)
答案 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
...