Файл .sh для Кв. - получает обновление update/apt-get

Это может быть простым вопросом, но...

У меня есть update.sh файл со следующим:

sudo apt-get update
sudo apt-get upgrade

Когда я выполняю это использование./update.sh (после установки его к исполняемому файлу), это просит, чтобы я ввел свой sudo пароль. Это выполнит обе команды, и я могу чрезвычайно только запустить этот скрипт однажды и иметь мою Кв. - получают команды обновления/обновления, заботившиеся о?

Спасибо все

1
задан 29 April 2017 в 20:07

3 ответа

Путь sudo работы состоят в том, что по умолчанию это дает Вам за 15 минут до того, как это попросит пароль снова. Таким образом да, использование двух команд, будет работать превосходный, и в зависимости от сколько времени apt-get update выполнения необходимо будет ввести пароль однажды.

Однако это не лучшая практика. Вместо этого я предложил бы делать Ваш целый сценарий выполненным с sudo вместо того, чтобы поместить его перед каждой командой в файле. Другими словами, сценарий должен быть:

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

И выполненный это как

sudo  ./my_script.sh

Заметьте, что здесь мы используем #!/bin/bash строка для использования bash окружите как интерпретатор. Это очень отличается от /bin/sh. Поскольку, что Вы делаете, это не имеет никакого значения, но если необходимо знать, что они отличаются по синтаксису некоторых операторов.

Однако еще лучший подход должен был бы избавиться от сценария в целом и функции использования или псевдонима, который делает то, что Вы хотите. Сценарии действительно для больших объемов кода, который Вы хотите снова использовать. Для 2 - 3 строк функция или псевдоним в ~/.bashrc файл это будет достаточным.

Лично я сделал бы что-то вроде этого в моем ~/.bashrc

alias agu="sudo bash -c 'apt-get update && apt-get upgrade'"
3
ответ дан 3 December 2019 в 06:54

Не забывайте устанавливать DEBIAN_FRONTEND=noninteractive для тех противных подсказок, о который версия поддержать:

sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y;

Если Вы не сделаете, то этот Ваш сценарий зависнет в исправлении неопределенности. Таким образом, если бы Вы собирались сделать это в сценарии, то я сделал бы следующее:

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

patching(){
    # sudo specified because this was from my bootstrap script for an
    # ec2 instance remove the sudos as previously stated if you are 
    # going to exec it from your current shell
    sudo apt-get update -y;
    sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y;
};

patching;

Ранее установленные методы будут работать..., пока они не сделают.

Я должен был вернуться к предыдущему сценарию, который я записал для нахождения этой переменной.

Хотелось бы надеяться, это помогает кому-то еще с их сценарием исправления/начальной загрузки.

1
ответ дан 3 December 2019 в 06:54

Почему не просто выполненный:

apt-get update && apt-get upgrade
0
ответ дан 3 December 2019 в 06:54

Другие вопросы по тегам:

Похожие вопросы: