从该脚本中删除脚本文件是否安全?

hto*_*que 11 bash executable shell-script rm

想象一下我有一个脚本foo。它应该在用户登录时运行一次,并且在成功运行后不需要。

我的问题:从脚本中删除脚本文件是否安全?

例如:

#!/bin/bash

# do something
...

# if successful
rm /path/to/foo
exit 0
Run Code Online (Sandbox Code Playgroud)

jof*_*fel 6

在运行 shell 文件时删除它是安全的,因为文件处理程序不受(重新)移动相应文件的影响。

有关更多信息,请参阅此处

  • @maxschlepzig POSIX 允许删除当前正在执行的可执行文件的最后一个链接失败:[`unlink`](http://pubs.opengroup.org/onlinepubs/009695399/functions/unlink.html) may fail with `ETXTBUSY`。(奇怪的是,规范中没有定义“纯过程”和“共享文本”;AFAIK 它们指的是可执行程序的一个组件:可执行文件本身或它使用的库)。除 HP-UX 之外的所有主要 unice 都允许重命名和取消链接可执行文件。 (3认同)
  • 请注意,它可能不起作用,具体取决于您的系统(即 `rm <it-self>` 在 HP-Ux 上不会成功。 (2认同)
  • @Ouki通过简单地以`exec rm /path/to/foo`结束脚本应该很容易解决。 (2认同)