我编写了一个脚本,该脚本应该运行一些命令,重新启动我的ubuntu服务器,然后在服务器启动后,恢复操作,并从bash文件中删除该条目。
我已经尝试了几个小时,以弄清楚为什么我的脚本无法写入.bashrc(或与此有关的任何文件)。单独测试命令效果很好。但是,通过我的脚本运行时,不会将任何内容写入文件。在这一点上,我很沮丧,真的很想换一双眼睛,因为我确信原因很愚蠢,可能是我缺少的东西。这将是我的第一个脚本,因此如果这最终成为一个愚蠢的问题,我们感到抱歉。我在注释中加上了“ sudo reboot命令”,因此不必每次都重新启动。
该脚本的名称为test.sh,从〜/运行。我希望这很清楚,并且我什么都不会错过。
#!/bin/bash
echo "Script initiating"
#condition for script to run after reboot, created later on
if [ ! -f /var/run/bootflag ]; then
echo "First run"
script="bash ~/test.sh"
#this will add the script in the bash file so it will be ran on next boot
echo "$script" >> ~/.bashrc
echo "bash entry added"
#creating flag file to check if this is a second run
sudo touch /var/run/bootflag
echo "Flag created"
echo "Rebooting..."
#sudo reboot
else
echo "resuming script..."
echo "cleaning up..."
#remove the bash entry by replacing it with a space
sed -i '/bash/d' ~/.bashrc
echo "bash entry removed"
#remove the boot flag
sudo rm -f /var/run/bootflag
echo "bootflag removed"
echo "running commands post-reboot"
#commands here
echo "script exiting"
fi
答案 0 :(得分:0)
我终于想通了。
因为我使用sudo运行脚本,所以脚本将采用root用户的相对路径~/.bashrc
。脚本一直运行良好,我一直在查看用户的.bashrc,并期望在写入根用户的.bashrc文件时一切都会出现。
我在所有提升的命令中都使用了sudo
内部脚本,并在没有sudo
的情况下正常运行了脚本,并且脚本可以正常运行。
正如我认为的那样,这毕竟是愚蠢的。至少我今天学到了一些东西。
感谢大家抽出宝贵的时间来答复和帮助,我真的很感激。