我有一个 Makefile,它运行一个需要一点时间的工具;它允许我替换使用的命令:
make TOOL=alternative-tool
我想跳过 Makefile 中的这一步,所以我正在寻找一个以状态 0 退出的命令,并且副作用可以忽略不计。
显然,我可以只使用true
,但这有点令人困惑:
make TOOL=true
读起来好像我想运行该工具,但我不想。
是否有一个默认安装的可执行文件不是/bin/true
以状态 0 退出,并且有一个吸引人且易于键入的名称?
我有一个 Makefile,它运行一个需要一点时间的工具;它允许我替换使用的命令:
make TOOL=alternative-tool
我想跳过 Makefile 中的这一步,所以我正在寻找一个以状态 0 退出的命令,并且副作用可以忽略不计。
显然,我可以只使用true
,但这有点令人困惑:
make TOOL=true
读起来好像我想运行该工具,但我不想。
是否有一个默认安装的可执行文件不是/bin/true
以状态 0 退出,并且有一个吸引人且易于键入的名称?
即使您要求的是“不是
/bin/true
”,用true
全名替换/bin/true
以表明它是true
程序而不是“真”的其他含义可能是最好的解决方案。你担心的是
true
在似乎不是命令名称。但是如果你写
那么这无疑是一个命令。有人可能会误读
TOOL=true
为在某处打算使用其他工具,但这种误读TOOL=/bin/true
是不可能的。我不确定什么时候
:
会起作用,它是一个内置的 shell,但不是一个外部命令。Henning Makholm报告说它似乎有效。但我认为它并不适用于所有情况,你发现它对你不起作用。至于 shell 别名,您不能使用它,因为别名扩展不会在您传递给命令的参数中执行,makefile 也不会使用先前定义的 shell 别名。即使
make
在新的 shell 中运行您的命令,该 shell 也不会有别名(即使有别名也不会使用它,因为它将是一个非交互式 shell,其中不会自动启用别名扩展)。虽然我同意使用完整路径
true
将是最好的解决方案,但我想指出迄今为止避免实际命令执行的最常见方法:echo
在它前面加上一个。所以:您始终可以创建自己的命令,该命令只返回零退出状态。一些选项:
一个适当命名的符号链接
/bin/true
一个空的 shell 脚本
一个几乎是空的 C 程序:
在工作目录中创建一个指向 /bin/true 的符号链接,名称类似于
skip
. 因此...那么制作线可以...
这是一种使用更多字符的方法:
完成后,您只需使用 name 即可重新执行它
T
。