是否有一种通用的方法来运行 bash 脚本并查看结果命令,但不实际运行命令 - 即“空运行”/模拟器之类的?
我有一个我希望运行的数据库安装脚本(实际上是运行 ./configure 和 make 后的“make install”),但它正在安装各种我不想要的东西。
所以我想要一种方法来在真正运行它之前准确地了解它会做什么 - 甚至可以手动运行命令。
是否有任何实用程序可以执行此类任务(或任何相关/类似的任务)?
答案1
GNU make 有一个选项进行试运行:
'-n'
'--只是打印'
'--试运行'
'--侦察'
“禁止操作”。导致 make 打印使目标更新所需的配方,但不实际执行它们。请注意,即使使用此标志,某些配方仍然会执行(请参阅 MAKE 变量如何工作)。此外,更新包含的 makefile 所需的任何配方仍然会执行。
因此,对于您的情况,只需运行make -n install
即可查看将执行的命令make
。
答案2
任何版本的make
有一个-n
选项(参见POSIX 描述make
),但是壳没有相应的选项(例如显示命令而不执行它们)。
更糟糕的是,如果您碰巧使用 automake,它会粘贴大量的样板脚本(其开发人员将其称为“递归规则”),这会破坏任何人使用“make -n”的能力,看看会发生什么。发生。
进一步阅读:
-
make -n
可以帮助展示无需实际执行即可完成的操作。但请注意,这仍然会执行前缀为‘+’
, 的命令,并且在使用 GNU make 时,包含字符串‘$(MAKE)’
或 的命令‘${MAKE}’
(请参阅而不是执行在 GNU Make 手册中)。通常,这有助于展示递归规则的作用,但这意味着,在您自己的规则中,您不应该混合这样的递归具有更改任何文件的操作。此外,请注意,即使使用 -n,GNU make 也会更新 Makefile 文件本身的先决条件(请参阅重新制作Makefile在 GNU Make 手册中)。 回复:automake 生成的规则中“make -n”的更多问题。
触及了中列出的一些陷阱27.9 处理产生大量输出的工具