我四处寻找这个问题的答案,却找不到答案。
我编写了一个简单的脚本来执行初始服务器设置,我希望它在完成时从根目录中删除/取消链接。我已经尝试了一些我用Google搜索的解决方案(例如/ bin / rm $ test.sh),但脚本似乎总是保持不变。这可能吗?以下是我目前的脚本。
#! /bin/bash
cd /root/
wget -r -nH -np --cut-dirs=1 http://myhost.com/install/scripts/
rm -f index.html* *.gif */index.html* */*.gif robots.txt
ls -al /root/
if [ -d /usr/local/psa ]
then
echo plesk > /root/bin/INST_SERVER_TYPE.txt
chmod 775 /root/bin/*
/root/bin/setting_server_ve.sh
rm -rf /root/etc | rm -rf /root/bin | rm -rf /root/log | rm -rf /root/old
sed -i "75s/false/true/" /etc/permissions/jail.conf
exit 1;
elif [ -d /var/webmin ]
then
echo webmin > /root/bin/INST_SERVER_TYPE.txt
chmod 775 /root/bin/*
/root/bin/setting_server_ve.sh
rm -rf /root/etc | rm -rf /root/bin | rm -rf /root/log | rm -rf /root/old
sed -i "67s/false/true/" /etc/permissions/jail.conf
break
exit 1;
else
echo no-gui > /root/bin/INST_SERVER_TYPE.txt
chmod 775 /root/bin/*
/root/bin/setting_server_ve.sh
rm -rf /root/etc | rm -rf /root/bin | rm -rf /root/log | rm -rf /root/old
sed -i "67s/false/true/" /etc/permissions/jail.conf
break
exit 1;
fi
答案 0 :(得分:67)
rm -- "$0"
应该做的伎俩。 $ 0是执行脚本完整路径的魔术变量。
答案 1 :(得分:21)
这对我有用:
#!/bin/sh
rm test.sh
也许你真的不想在'$ test.sh'中加上'$'?
答案 2 :(得分:4)
脚本可以在退出时通过shred command(作为安全删除)自行删除。
#!/bin/bash
currentscript="$0"
# Function that is called when the script exits:
function finish {
echo "Securely shredding ${currentscript}"; shred -u ${currentscript};
}
# Do your bashing here...
# When your script is finished, exit with a call to the function, "finish":
trap finish EXIT
答案 3 :(得分:2)
最简单的一个:
#!/path/to/rm
用法:./path/to/the/script/above
注意:/path/to/rm
不能有空白字符。
答案 4 :(得分:-3)
为什么要删除脚本?正如其他人所说,这意味着你必须在其他地方保留副本。
建议使用类似“firstboot”的方法。只需在例如创建一个空文件即可/ etc / sysconfig触发执行此脚本(如果存在)。然后在脚本末尾删除该文件。
修改脚本,使其具有必要的chkconfig标头并将其放在/etc/init.d/中,以便在每次启动时运行。
这样,您可以稍后通过重新创建触发器脚本重新运行脚本。
希望这有帮助。