如何让脚本以root用户身份运行命令
我刚开始使用Ubuntu和bash脚本,但我只是制作了runUpdates.sh,并在我的.profile中添加了以下代码来运行它:
代码语言:javascript复制if [ -f "$HOME/bin/runUpdates.sh" ]; then
. "$HOME/bin/runUpdates.sh"
fi我遇到的问题是,我希望脚本像root一样运行(因为我不想输入我的sudo密码)
我发现了一些我应该能够执行sudo chown root.root
我觉得这个脚本很不错。我错过了什么?-rwxr-xr-x 1 root root 851 Mar 23 21:14 runUpdates.sh*
您能帮助我以root用户身份运行此脚本中的命令吗?我并不是真的想更改sudors文件,我真的只想在root下运行这个脚本中的命令(如果可能的话)。
代码语言:javascript复制#!/bin/sh
echo "user is ${USER}"
#check for updates
update=`cat /var/lib/update-notifier/updates-available | head -c 2 | tail -c 1`;
if [ "$update" = "0" ]; then
echo -e "No updates found.\n";
else
read -p "Do you wish to install updates? [yN] " yn
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
echo -e 'No\n';
else
echo "Please wait...";
echo `sudo apt-get update`;
echo `sudo apt-get upgrade`;
echo `sudo apt-get dist-upgrade`;
echo -e "Done!\n";
fi
fi
#check for restart
restartFile=`/usr/lib/update-notifier/update-motd-reboot-required`;
if [ ! -z "$restartFile" ]; then
echo "$restartFile";
read -p "Do you wish to REBOOT? [yN] " yn
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
echo -e 'No\n';
else
echo `sudo shutdown -r now`;
fi
fi我添加了要调试的用户,它总是输出我的用户而不是root用户,并提示输入sudo密码(因为我使用sudo调用命令),或者告诉我您是root用户吗?(如果我删除sudo)
另外,有没有一种方法可以实时输出更新命令stdout,而不是在它们完成时只输出一个块?
(我也试着用shebang作为#!/bin/bash)