Eu corro scripts bash. Eu quero executá-los tanto do terminal quanto da GUI com "Executar no Terminal" e sair depois de executar o bash
. A simples visualização da saída é explicada aqui : add read -rn1
.
Problema X :
Eu quero uma solução "limpa", para ter no final o mesmo terminal com bash que eu possa fechar com um exit
se o script for executado no terminal e se for da GUI. Eu posso adicionar bash -i
, mas se executado a partir do terminal, seriam necessários dois exit
para fechar o terminal. exec bash -i
resultou no mesmo.
Existe uma maneira de um script verificar se ele foi iniciado na GUI por meio de "Executar no Terminal"?
Adicionado 1 por comentário:
ps aux | grep aaaa # while script started from GUI was running
mint 53293 0.1 0.0 11216 3356 pts/3 Ss+ 21:58 0:00 /bin/bash /home/mint/aaaaa.sh
Observou que a diferença de um iniciado no terminal é Ss+
em vez de S+
.
Eu suponho que seu script bash é nomeado
/path/to/mybashscript.sh
Use
ps
para localizarmybashscript.sh
($0
se executado dentro do script); inclua asstate/stat
colunas para identificar os estados específicos:ou outra maneira de filtrar a
grep
linha:De seus comentários, a diferença se deve à adição
s
:s is a session leader
para a maneira da GUI, o Ubuntu não possui essa maneira de iniciar o script do gerenciador de arquivos para verificar.De
man ps
, os códigos de estado são os seguintes: