以零状态退出的命令(不是 /bin/true)?

Rog*_*mbe 11 command-line

我有一个 Makefile 来运行一个需要一点时间的工具;它允许我替换使用的命令:

make TOOL=alternative-tool
Run Code Online (Sandbox Code Playgroud)

我想跳过 Makefile 中的那一步,所以我正在寻找一个以状态 0 退出的命令,它的副作用可以忽略不计。

显然,我可以只使用true,但这有点令人困惑:

make TOOL=true
Run Code Online (Sandbox Code Playgroud)

读起来好像我运行该工具,但我不想。

是否有默认安装的可执行文件不是/bin/true以状态 0 退出,并且具有吸引人且易于键入的名称?

Eli*_*gan 42

即使您要求的不是“不是/bin/true”,用true全名代替/bin/true以表明它是true程序而不是“真实”的其他含义可能是最好的解决方案。

您担心的是true

make TOOL=true
Run Code Online (Sandbox Code Playgroud)

似乎不是命令名称。但是如果你写

make TOOL=/bin/true
Run Code Online (Sandbox Code Playgroud)

那么这无疑是一个命令。有些人可能误读TOOL=true了其他工具在某处的意图,但TOOL=/bin/true不太可能发生这种误读。


我不确定何时:,它是一个内置的 shell 而不是外部命令,会起作用。亨宁Makholm报道称,它似乎工作。但我认为它并不适用于所有情况,而且您发现它对您不起作用

至于 shell 别名,您不能使用它,因为在传递给命令的参数中不会执行别名扩展,makefile 也不使用先前定义的 shell 别名。即使make在新的 shell 中运行您的命令,该 shell 也不会有别名(并且即使有别名也不会使用它,因为它将是一个非交互式 shell,不会自动启用别名扩展)。

  • 不幸的是,对于这个特定的 Makefile(它使用 _erlang.mk_),使用 `:` 不起作用。明确说明 `/bin/true` 可能是最好的方法。 (2认同)

mur*_*uru 7

虽然我同意使用完整路径 totrue将是最好的解决方案,但我想注意可能是迄今为止避免实际命令执行的最常见方法:echo在它前面粘贴一个。所以:

make TOOL=echo
Run Code Online (Sandbox Code Playgroud)


Dav*_*ter 5

您始终可以创建自己的命令,该命令只返回零退出状态。一些选项: