我一直在尝试创建一个在我登录时运行的脚本。它是这样的sudo apt-get update
:sudo apt-get autoremove
#!/bin/bash
(sudo apt-get update)
(sudo apt-get autoremove)
但每当我运行脚本时,我的电脑就会冻结。我猜是因为它正在等待脚本提供密码。如果我PASSWD:mypassword
在命令后添加如下命令,会不会有效:
#!/bin/bash
(sudo apt-get update)PASSWD:mypassword
(sudo apt-get autoremove)PASSWD:mypassword
或者我还需要做点别的吗?有办法吗?如果有的话请告诉我!
答案1
实际上,您不必在脚本中包含密码(就我所见,通常不建议在脚本中包含密码)。相反,您可以编辑 sudoer 文件,这样您就可以在不需要密码的情况下运行 apt-get 命令。
更多信息请访问本网站。
打开终端(ctrl++ alt)T
输入命令
sudo visudo
在 sudoers 文件类型末尾
username ALL=(ALL) NOPASSWD: /usr/bin/apt-get
其中 username 是你的用户名(显然)
编辑此文件将允许您运行任何 apt-get 命令而无需输入密码。这意味着您也可以在不输入密码的情况下安装或升级软件包。
您还可以通过在逗号后输入命令路径来将其他命令添加到此列表中。在终端中输入以下命令即可找到命令的路径。
which command
其中 command 是命令的名称(例如 reboot)。
答案2
启动 bash 脚本的命令:
/bin/bash #!/bin/bash
询问用户 root 密码的命令:
[ “$UID” -eq 0 ] || exec sudo bash “$0” “$@”
接下来可以执行的命令示例:
apt-get 更新
apt-get 升级 --yes
关机-r现在
祝你的剧本好运
答案3
尝试这个脚本:
#!/bin/bash
echo "yourpassword" | sudo -S apt-get update
echo "yourpassword" | sudo -S apt-get autoremove
在这里,您可以回显您的密码并使用读取密码-S选项(sudo 的 stdin 选项)。