为什么下面的脚本会删除自身?

为什么下面的脚本会删除自身?

如果您创建包含以下内容的可执行文件并运行它,它将自行删除。
这是如何运作的?

#!/bin/rm

答案1

内核解释以 开头的行#!并使用它来运行脚本,并传入脚本的名称;所以这最终会运行

/bin/rm scriptname

这会删除脚本。 (作为斯蒂芬·查泽拉斯 指出scriptname这里足以找到脚本 - 如果您指定了相对或绝对路径,则按原样传递,否则在前面找到的任何路径都会被添加到前面,如果您包含该路径并且脚本位于当前路径中PATH,则可能包括空字符串PATH目录。您可以使用 echo 脚本来#!/bin/echo看看它是如何工作的。)

作为霍布斯指出,这意味着您的脚本实际上是一个rm脚本,而不是一个bash脚本 - 后者将以#!/bin/bash.

程序如何运行有关其在 Linux 中如何工作的详细信息;该文章的评论提供了其他平台的详细信息。#!被称为 shebang,通过搜索该术语您会找到很多信息(感谢亚伦的建议)。作为日本LP指出,您还会发现它被称为“pound bang”或“hash bang”(#在不使用的国家/地区通常称为“pound”£或“hash”,以及!“bang”)。维基百科有更多信息。

相关内容