executa o script iniciado a partir do nautilus em um terminal aberto

0

O script basicamente tem saída que o usuário deve ler. Eu estava pensando nisso:

#!/bin/bash

#cd to the script dir if executed from outside
SCRIPT_PATH=$(dirname "$(readlink -f "$0")")
cd "$SCRIPT_PATH"
if [ ! -t 1 ]; then #not from terminal
    SCRIPT=$(basename "$(readlink -f "$0")")
    x-terminal-emulator --profile "$USER" --working-directory "$SCRIPT_PATH" -e "./$SCRIPT" &
    exit 0
fi

echo "output"

#keep terminal open
bash

mas isso tem o problema de que se você tentar fechar a janela do novo terminal (quando executado do nautilus, o pgrep diz apenas um processo bash) ou o terminal 'antigo' (quando executado a partir de um terminal já aberto, pgrep diz dois processos bash), que "Ainda há um processo em execução neste terminal. Fechar o terminal irá eliminá-lo."

Estou à procura de uma solução completa: pode ser executado a partir de um terminal aberto, pode ser executado pelo nautilus ou outro gerenciador de arquivos, sempre permitirá que o usuário leia a saída, não deixe processos paralisados e não serão exibidos esse aviso no usuário inocentemente fechando a janela.

Tenho certeza de que o 'processo' que faz o console visível mostra que o aviso é bash na última linha, mas que o bash é a única coisa que permite que o eco seja visto se o script for executado a partir do nautilus .

    
por i30817 25.04.2018 / 08:54

1 resposta

0

é possível resolver isso fazendo:

SCRIPT_PATH=$(dirname "$(readlink -f "$0")")
cd "$SCRIPT_PATH"
if [ ! -t 1 ]; then #not from terminal
    SCRIPT=$(basename "$(readlink -f "$0")")
    SUBPROC=1 x-terminal-emulator --profile "$USER" --working-directory "$SCRIPT_PATH" -e "./$SCRIPT" &
    exit 0    
fi
echo "output"
...
[[ -v SUBPROC ]] && read -p "Press any key to exit" -n1 junk

um pouco chato, mas com certeza.

    
por 25.04.2018 / 09:56

Tags