Como fechar o terminal de um script bash

4

Sou novo neste site e no Linux.

Estou tentando fazer um script simples que abrirá um novo terminal com um novo nome e feche o terminal antigo de onde o script estava sendo executado.

O problema que encontro é que o número do processo está mudando. Então, se eu começar o processo e digitar: echo $$ Eu vejo 10602. Após o término do processo, se o novo terminal for carregado, o número do processo é alterado para 10594. Então, estou realmente matando o processo errado ..

Neste momento, utilizo este código:

echo -n "Type new terminal name > "  # displays messagebox
read text                            # load messagebox input
echo "$text" > /etc/terminalname     # write messagebox input to file

gnome-terminal                       # open terminal with new name

kill -9 $PPID                        # this will kill the old terminal
exit                                 # exit script
    
por Underscore 14.02.2016 / 17:41

2 respostas

3

Suponho que você esteja executando esses comandos em um script.

Tenha em mente que $$ é o pid do processo bash em execução . Se você estiver executando um script, o processo bash desse script é filho do seu shell interativo atual. Se você matar $$ no script, estará eliminando o script, não o shell pai.

O Bash armazena o pid pai na variável $PPID , então você quer

#!/bin/bash
gnome-terminal &   # launch a new terminal
kill $PPID         # kill this script's parent

Estou assumindo que o shell pai é o gerado a partir do terminal e que você não alterou o comportamento padrão do terminal de fechar quando o shell é encerrado.

Como um aparte, em vez de

echo -n "Type new terminal name > "  # displays messagebox
read text                            # load messagebox input

faça

read -p "Type new terminal name > " text
    
por glenn jackman 14.02.2016 / 22:36
0

Eu encontrei uma solução adequada para este problema, graças às respostas dadas. Simplesmente poderia ser feito com o comando kill -9 $var (onde var é $ PPID).

Eu editei o código do meu start-post para o script que estou usando agora. Thx para todas as suas contribuições.

    
por Underscore 15.02.2016 / 14:57