Abrindo um Terminal para o script bash atual, se ele não foi iniciado em um

2

Como posso fazer com que um script seja iniciado novamente em uma janela do Terminal se não tiver sido iniciado em um?

Com base em pergunta , eu tentei, em um arquivo chamado testterm marked executable:

#! /bin/sh
if [ -t 0 ];  # stdin
then
    echo "yay! terminal!"
else
    Terminal sh ~/Desktop/testterm
fi

... mas o Terminal do Haiku apenas abre e nunca mostra nada, ou às vezes abre e desaparece imediatamente.

No Terminal, se eu digitar Terminal sh ~/Desktop/testterm , ele funcionará uma vez, abrindo um Terminal com "yay! terminal!" nela, mas as tentativas subsequentes geram Terminais vazios.

    
por Kev 16.04.2013 / 15:01

1 resposta

1

Um hack que você pode tentar é o seguinte:

  1. Crie um arquivo bash .rc especial que origine seu bashrc e execute seu script. Vamos chamá-lo de ~/foo.rc

    $ cat ~/foo.rc
    #!/bin/sh
    ~/Desktop/testterm
    
  2. Crie um novo "shell" que chame bash com ~/foo.rc como seu arquivo .rc. Salve este script como fake_shell em algum lugar no seu $PATH (por exemplo, ~/config/bin ) e torne-o executável:

  3. Agora, no seu script testterm , inicie Terminal usando fake_shell como o shell.

O script se torna:

#!/bin/sh
if [ ! -t 0 ];  # stdin
then
    TIMESTAMP='date +%Y%m%d%H%M'
    echo "#!/bin/sh
    source /boot/common/etc/profile
    $0" > ~/temp_term$TIMESTAMP.rc
    echo "#!/bin/sh
    bash --rcfile ~/temp_term$TIMESTAMP.rc" > ~/config/bin/temp_shell$TIMESTAMP
    chmod a+x ~/config/bin/temp_shell$TIMESTAMP
    Terminal temp_shell$TIMESTAMP
    rm -f ~/config/bin/temp_shell$TIMESTAMP
    rm -f ~/temp_term$TIMESTAMP.rc
fi

echo "yay! terminal!"
# your script here
exit
    
por 16.04.2013 / 15:54