У меня есть простой сценарий оболочки, который используется для обновления Firefox. Содержание этого:
#!/bin/sh
sudo apt-get pruge firefox
sudo apt-get install firefox
Вот и все. Теперь, когда я запускаю файл в терминале, используя по порядку,
cd Desktop/Batch\ Files
sudo chmod 775 Firefox.sh
sudo ./Firefox.sh
Выходные данные говорят, что действие pruge
не может быть завершено, но остальная часть файла выполняется.
Вот точный результат:
sudo: unable to resolve host ubuntu: Connection timed out
E: Invalid operation pruge
sudo: unable to resolve host ubuntu: Connection timed out
Reading package lists... Done
Building dependency tree
Reading state information... Done
firefox is already the newest version (57.0.1+build2-0ubuntu0.16.04.1).
0 upgraded, 0 newly installed, 0 to remove and 261 not upgraded.
Как бы досадно это было, я все равно могу запускать код построчно, и действие purge
работает.
В вашем сценарии есть опечатка, она должна быть purge
, а не pruge
. И до этого вам не нужно sudo внутри вашего скрипта, если вы вызываете свой скрипт с помощью sudo script.sh
. Таким образом, ваш сценарий должен быть:
#!/bin/sh
apt-get purge firefox
apt-get install firefox
Вы хотите установить флаг -y
для установки, чтобы он автоматически устанавливался, даже если нужно установить несколько пакетов. Поэтому измените:
apt-get install firefox
на:
apt-get install -y firefox
Если вы хотите, чтобы вывод был бесшумным, вы можете использовать опцию -qq
(что подразумевает -y
), в этом случае В случае, если вам также необходимо задать параметр очистки -y
или -qq
, но тогда обе команды будут выполняться без вывода сообщений. Пример полностью тихого сценария:
#!/bin/sh
apt-get purge -qq firefox &&
apt-get install -qq firefox
Вы наверняка удивляетесь, почему я поместил эти &&
в сценарий: это заставляет вторую команду выполняться только в том случае, если первая была успешной.
Однако, как правило, нет необходимости очищать Firefox для установки новой версии. Для этого должно быть достаточно просто sudo apt-get update && sudo apt-get install --reinstall firefox
, поскольку профиль и настройки все равно не удаляются.
В вашем коде вы вводите «pruge», его нужно заменить на «purge».