即使遇到一个声明来删除自己,bash脚本怎么执行呢?
例如,当我运行test.sh脚本时:
例如,当我运行test.sh脚本时:
<--some commands--> rm test.sh <--some more commands--> end
脚本执行直到结束,然后再删除它
实际发生的是bash使文件保持打开,rm不会停止.
所以rm调用libc函数“unlink()”,它将从它的目录中删除“link”到inode.这个“link”实际上是一个文件名和一个inode号(你可以看到inode号与ls – 一世).
只要程序打开,inode就存在.
您可以轻松测试此声明如下:
$echo read a> ni $bash ni
而在另一个窗口中:
$pgrep -lf bash\ ni 31662 bash ni $lsof -p 31662|grep ni bash 31662 wmertens 255r REG 14,2 7 12074052 /Users/wmertens/ni $rm ni $lsof -p 31662|grep ni bash 31662 wmertens 255r REG 14,2 7 12074052 /Users/wmertens/ni