Terminal fecha após usar um arquivo bash [closed]

1

Então estou atualmente em estágio e trabalhamos aqui com o mintlinux.

Meu chefe quer que eu crie um arquivo executável que atualiza automaticamente o libreoffice de 5.1 para 5.3 depois de clicar nele.

Eu criei o arquivo bash como este (eu não tenho certeza se isso está correto, já que eu não uso o mintlinux ou tenho alguma experiência com ele)

#! /bin/bash

sudo add-apt-repository ppa:libreoffice/ppa 
sudo apt-get update && sudo apt-get dist-upgrade

Mas o terminal fecha em um instante depois que eu abro o arquivo bash, alguma idéia de como eu posso consertar isso?

    
por Nuhai 03.04.2017 / 09:02

2 respostas

1

Se você simplesmente deseja que a janela fique ativa até que você possa ver que tipo de saída você tem, você pode usar o comando read.

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

Mas eu sinto que há um problema maior lá: raramente é uma boa idéia usar "sudo" em scripts bash. Em vez disso, você deve executar o script com um comando sudo.

E seu script, ele simplesmente não atualiza o Libre Office, ele faz um upgrade de sistema completo para todos pacotes.

Se você deseja atualizar o Libre Office somente , então você precisa especificar que:

sudo apt-get install --only-upgrade libreoffice

Se o seu chefe deseja que as instalações do Libre Office permaneçam atualizadas, você pode querer verificar como fazer isso com o cron; se puder ajudar você a fazer isso a cada reinicialização, a cada X horas (ou minutos), etc.

E como há um crontab para "root" (ou seja, execute: "sudo crontab -e"), você não teria "problemas de sudo" se você mantiver isso dessa maneira.

    
por DocWeird 03.04.2017 / 09:27
0

Quando você clica em um arquivo executável da interface gráfica, ele executa o conteúdo do início ao fim e, ao final, sai.

Se você quiser manter o terminal aberto por algum motivo (ou seja, verificar a saída), depois que o script terminar, você poderá, por exemplo:

  • Execute o script de um terminal usando: ./your_script.sh
  • Adicione um "sono" no final. Desta forma, o script será executado do começo ao fim, mas não chegará ao fim até que o "tempo de sono" termine. Você pode fazer assim:

Item da lista

 #! /bin/bash

 sudo add-apt-repository ppa:libreoffice/ppa 
 sudo apt-get update && sudo apt-get dist-upgrade

 sleep 30

Isso manterá seu terminal aberto por 30 segundos após o término do comando apt-get (ou travado). Você pode usar outros valores de tempo (unidades), como "5m" (5 minutos) ou "2h" (2 horas).

    
por Julen Larrucea 03.04.2017 / 09:19