Терминал закрывается после использования файла bash [закрыт]

Прежде всего, давайте поймем, почему появляется сообщение. На самом деле, если у пакета нет зависимостей, которые вы еще не установили или явным образом сказал ему установить, apt никогда не спрашивает вас:

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

Хотя если вы хотите установить пакет, который зависит на пакетах, о которых вы не упомянули, он спросил бы:

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Что бы вы ни говорили, не спросите, не указали ли вы также, что вы хотите установить этот пакет:

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

Но тогда, как сделать так, чтобы он не спросил вас окончательно? Через Rizwind ответ должен охватывать решения ad-hoc и scripting (на самом деле эта опция больше используется в скриптах), вы можете вместо этого изменить свой файл apt.conf и добавить:

APT::Get::Assume-Yes

Что-то вроде этого должно быть достаточно:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

Обратите внимание, что это не позволит другим более вопиющим запросам, которые вы должны проверить, например:

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

Вот почему я бы не рекомендовал использовать из yes | ..., так как это предупреждение будет проигнорировано.

1
задан 3 April 2017 в 10:02

6 ответов

Если вы просто хотите, чтобы окно оставалось до тех пор, пока вы не увидите, какой у вас вывод, вы можете использовать команду read.

read -rsp $'Press enter to continue...\n'

Но я чувствую, что есть больше проблема там: редко бывает хорошей идеей использовать «sudo» в сценариях bash. Вместо этого вы должны запустить скрипт с помощью команды sudo.

И ваш сценарий не просто обновляет Libre Office, но и делает полный пакет обновления для всех пакетов.

If вы хотите обновить Libre Office run , тогда вам нужно указать, что:

sudo apt-get install --only-upgrade libreoffice

Если ваш босс хочет, чтобы установки Libre Office не обновлялись, вы можете проверить как это сделать с помощью cron; если вы можете сделать это при каждой перезагрузке, каждые X часов (или минут) и т. д.

И так как есть «crontab» для «root» (т. е. run: «sudo crontab -e») у вас не было бы проблем с sudo, если бы вы справились с этим так.

1
ответ дан 18 July 2018 в 15:37

Когда вы нажимаете на исполняемый файл из графического интерфейса, он выполняет его содержимое от начала до конца, а в конце он выходит.

Если вы хотите, чтобы терминал был открыт для некоторых Причина (т.е. проверка вывода), после завершения скрипта, вы можете, например:

Выполнить сценарий с терминала, используя: ./your_script.sh Добавить спал в конце. Таким образом, сценарий будет выполняться от начала до конца, но он не достигнет конца, пока не закончится «время сна». Вы можете сделать это следующим образом:

Элемент списка

#! /bin/bash sudo add-apt-repository ppa:libreoffice/ppa sudo apt-get update && sudo apt-get dist-upgrade sleep 30

Это задержит ваш терминал в течение 30 секунд после завершения команды apt-get (или сбой). Вы можете использовать другие значения времени (единицы), такие как «5 м» (5 минут) или «2 часа» (2 часа).

0
ответ дан 18 July 2018 в 15:37

Если вы просто хотите, чтобы окно оставалось до тех пор, пока вы не увидите, какой у вас вывод, вы можете использовать команду read.

read -rsp $'Press enter to continue...\n'

Но я чувствую, что есть больше проблема там: редко бывает хорошей идеей использовать «sudo» в сценариях bash. Вместо этого вы должны запустить скрипт с помощью команды sudo.

И ваш сценарий не просто обновляет Libre Office, но и делает полный пакет обновления для всех пакетов.

If вы хотите обновить Libre Office run , тогда вам нужно указать, что:

sudo apt-get install --only-upgrade libreoffice

Если ваш босс хочет, чтобы установки Libre Office не обновлялись, вы можете проверить как это сделать с помощью cron; если вы можете сделать это при каждой перезагрузке, каждые X часов (или минут) и т. д.

И так как есть «crontab» для «root» (т. е. run: «sudo crontab -e») у вас не было бы проблем с sudo, если бы вы справились с этим так.

1
ответ дан 24 July 2018 в 20:41

Когда вы нажимаете на исполняемый файл из графического интерфейса, он выполняет его содержимое от начала до конца, а в конце он выходит.

Если вы хотите, чтобы терминал был открыт для некоторых Причина (т.е. проверка вывода), после завершения скрипта, вы можете, например:

Выполнить сценарий с терминала, используя: ./your_script.sh Добавить спал в конце. Таким образом, сценарий будет выполняться от начала до конца, но он не достигнет конца, пока не закончится «время сна». Вы можете сделать это следующим образом:

Элемент списка

#! /bin/bash sudo add-apt-repository ppa:libreoffice/ppa sudo apt-get update && sudo apt-get dist-upgrade sleep 30

Это задержит ваш терминал в течение 30 секунд после завершения команды apt-get (или сбой). Вы можете использовать другие значения времени (единицы), такие как «5 м» (5 минут) или «2 часа» (2 часа).

0
ответ дан 24 July 2018 в 20:41

Если вы просто хотите, чтобы окно оставалось до тех пор, пока вы не увидите, какой у вас вывод, вы можете использовать команду read.

read -rsp $'Press enter to continue...\n'

Но я чувствую, что есть больше проблема там: редко бывает хорошей идеей использовать «sudo» в сценариях bash. Вместо этого вы должны запустить скрипт с помощью команды sudo.

И ваш сценарий не просто обновляет Libre Office, но и делает полный пакет обновления для всех пакетов.

If вы хотите обновить Libre Office run , тогда вам нужно указать, что:

sudo apt-get install --only-upgrade libreoffice

Если ваш босс хочет, чтобы установки Libre Office не обновлялись, вы можете проверить как это сделать с помощью cron; если вы можете сделать это при каждой перезагрузке, каждые X часов (или минут) и т. д.

И так как есть «crontab» для «root» (т. е. run: «sudo crontab -e») у вас не было бы проблем с sudo, если бы вы справились с этим так.

1
ответ дан 31 July 2018 в 23:41

Когда вы нажимаете на исполняемый файл из графического интерфейса, он выполняет его содержимое от начала до конца, а в конце он выходит.

Если вы хотите, чтобы терминал был открыт для некоторых Причина (т.е. проверка вывода), после завершения скрипта, вы можете, например:

Выполнить сценарий с терминала, используя: ./your_script.sh Добавить спал в конце. Таким образом, сценарий будет выполняться от начала до конца, но он не достигнет конца, пока не закончится «время сна». Вы можете сделать это следующим образом:

Элемент списка

#! /bin/bash sudo add-apt-repository ppa:libreoffice/ppa sudo apt-get update && sudo apt-get dist-upgrade sleep 30

Это задержит ваш терминал в течение 30 секунд после завершения команды apt-get (или сбой). Вы можете использовать другие значения времени (единицы), такие как «5 м» (5 минут) или «2 часа» (2 часа).

0
ответ дан 31 July 2018 в 23:41

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

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