apt-get update/apt-get upgrade 的 .sh 文件

apt-get update/apt-get upgrade 的 .sh 文件

这可能是一个简单的问题,但是......

我有一个 update.sh 文件,内容如下:

sudo apt-get update
sudo apt-get upgrade

当我使用 ./update.sh 运行此脚本时(将其设置为可执行文件后),它会要求我输入 sudo 密码。这会运行两个命令吗?我基本上只能运行此脚本一次,然后 apt-get update/upgrade 命令就会被处理?

感谢大家

答案1

这种方式sudo默认会给你 15 分钟的时间,然后才会再次要求输入密码。所以,是的,使用这两个命令,效果很好,具体取决于apt-get update运行时间,你需要输入一次密码。

但是,这不是最佳做法。相反,我建议使用 sudo 运行整个脚本,而不是将其放在文件中每个命令的前面。换句话说,脚本应该是:

#!/bin/bash
apt-get update
apt-get upgrade

并运行它

sudo  ./my_script.sh

请注意,这里我们使用#!/bin/bashline 来使用bashshell 作为解释器。这与 非常不同/bin/sh。对于你正在做的事情来说,这没什么区别,但如果你需要注意,它们在某些运算符的语法上有所不同。

但是,更好的方法是完全摆脱脚本,使用函数或别名来执行您想要的操作。脚本实际上适用于您想要重复使用的大量代码。对于~/.bashrc文件中的 2 - 3 行函数或别名来说,这就足够了。

我个人会在我的~/.bashrc

alias agu="sudo bash -c 'apt-get update && apt-get upgrade'"

答案2

不要忘记设置DEBIAN_FRONTEND=noninteractive关于要维护哪个版本的那些令人讨厌的提示:

sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y;

如果不这样做,您的脚本将处于修补困境。因此,如果您要在脚本中执行此操作,我只需执行以下操作:

#!/usr/bin/env bash
set -e

patching(){
    sudo apt-get update -y;
    sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y;
};

patching;

前面提到的方法在大多数情况下都会有效(如果它们有标志-y),直到它们由于交互式提示而无法工作。

希望它能够帮助其他人修复/引导脚本。

相关内容