Eu tentei recriar seu problema e acho que cheguei perto.
O problema que descobri é que você está enfrentando a condição if [[ -t 1 ]]
.
De acordo com tldp
Esta opção de teste pode ser usada para verificar se o stdin [-t 0] ou stdout [-t 1] em um determinado script é um terminal.
Assim, o script não poderá detectar o programa que o invocou por meio dessa condicional. Portanto, esta não é a solução precisa para o seu problema.
Agora, internamente, as combinações de teclas no Ubuntu são executadas através de um terminal falso. Na verdade, a variável TERM
está definida como dumb , quando um comando por meio das atalhos de teclado é executado.
Então, para resolver seu problema, você pode usar o seguinte código.
if [ $TERM == "dumb" ]
then
TERMINAL=false
CREATE="-c"
else
TERMINAL=true
CREATE="-nw"
fi
Não posso garantir que funcionará em todos os casos, mas funciona para o uso que você descreveu.
Espero que ajude. :)