Determine se um script bash foi iniciado por clique no ícone ou do terminal

4

Eu tenho um script que eu quero ter um comportamento diferente, dependendo se foi lançado a partir do terminal ou (duplo) clicando no ícone no gerenciador de arquivos. Posso fazer isso?

    
por B. Marek 21.11.2011 / 10:35

3 respostas

4

Você pode usar as diferenças no status de retorno de tty para ajudá-lo.

if tty -s;
then
    # running in a terminal
    ...
fi

( tty -s executa o comando tty silenciosamente)

Sair do status:

  • 0 se a entrada padrão for um terminal
  • 1 se a entrada padrão não for um terminal
  • 2 se receber argumentos incorretos
  • 3 se ocorrer um erro de gravação

Ou você pode usar os testes internos do shell para verificar se a entrada / saída padrão é de / para um terminal:

if [ -t 0 ];  # stdin
then
    # running in a terminal
    ...
fi
    
por 21.11.2011 / 11:51
0

Se isso estiver no seu computador, com você fazendo o ícone, você pode simplesmente passar um parâmetro extra na linha de comando referenciada pelo ícone, como:

/path/to/my/script fromgui arg2 arg3 .. argN

E apenas teste [[ "$1" == "fromgui" ]] ou simil.

    
por 21.11.2011 / 15:36
0

Outra possível verificação, veja o que há em / proc / $ PPID / cmdline

Esta é a linha de comando (delimitada por NUL) do processo que gerou você,

    
por 23.11.2011 / 18:41

Tags