为什么以下脚本会自行删除?

Modified on: Sat, 30 Jun 2018 10:43:30 +0800

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

#!/bin/rm

最佳答案

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

/bin/rm scriptname

删除脚本。 (StéphaneChazelas 指出scriptname这里足以找到脚本 - 如果您指定了相对路径或绝对路径,则按原样传入,否则在PATH中找到的任何路径都会被添加,如果PATH包含该脚本并且脚本位于当前目录中。您可以使用echo脚本 - #!/bin/echo - 查看其工作原理。)

hobbs指出,这意味着您的脚本实际上是rm脚本,而不是bash脚本 - 后者将以#!/bin/bash开头。

有关如何在Linux中运行的详细信息,请参阅程序如何运行;对该文章的评论提供了其他平台的详细信息。 #!被称为shebang,您可以通过搜索该术语找到大量信息(感谢Aaron的建议)。正如jlp指出的那样,你也会发现它被称为“pound bang”或“hash bang”( #通常称为“pound” - 在不使用£ - 或“hash”,!为“bang”的国家/地区)。 维基百科有更多信息。


相关问答

添加新评论