Abra o novo konsole a partir do script, executando o comando e tornando-se interativo na conclusão

2

Eu quero ser capaz de obter um script (executado na inicialização) para abrir um terminal konsole .
Quando é aberto, é para fazer algumas coisas persistentes (como alterar o diretório e o source bashrc) e executar um programa de longa execução.
Se o programa travar ou eu entrar e <ctrl+c> , é para começar a aceitar comandos da entrada padrão (como 'up-enter' para tentar novamente, como se fosse interativo o tempo todo).

Eu tentei muitas coisas para que ele funcionasse (no momento, estou tentando obtê-lo apenas em ls e reverter para interativo após a conclusão);

konsole -e ls
konsole --hold ls
konsole -e /bin/bash -c ls
konsole --hold -e "/bin/bash -c ls"
konsole -e "/bin/bash -i -c ls"
konsole -e /bin/bash -i -c ls
konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"

echo ls > /tmp/konsolebash
konsole -e "/bin/bash -i --rcfile /tmp/konsolebash"

Tem a ver com as citações? Eu não deveria usá-los, deveria estar fugindo de algo?
Eu deveria tentar executar bash ?
Estou ficando sem ideias, mas espero que seja possível (mas espero que não seja algo embaraçosamente simples que eu tenha perdido).

Eu irei buscar respostas que usem com sucesso outros emuladores de terminal se konsole em particular for o problema (mas como a questão é especificamente sobre konsole eu não acho que posso dar um tick suculento)

    
por Hashbrown 02.12.2013 / 01:55

1 resposta

3

Graças aos comentários de @n.st eu fiz este forro:

konsole -e /bin/bash --rcfile <(echo "cd /;ls;echo hi | less")

que é apenas uma versão mais curta sem tmpfiles, usando a substituição do processo bash para o seguinte;

echo "cd /;ls;echo hi | less" > /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash

Que executará alguns comandos, mostrará, alterará o ambiente, executará um programa de longa duração ( less ) e quando terminar ( :q ) será interativo.
Então substitua cd /;ls;echo hi | less (a demonstração) pelo seu script.

Sem histórico, mas pelo menos você está no diretório correto agora e tem alguma variável de ambiente que você possa querer configurar.

Basicamente o mesmo que a minha tentativa anterior;

konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"

exceto que a gravação do arquivo está fora da execução konsole , eu eliminei o sinalizador -i e os parâmetros de execução não estão em um bloco de cotação

Infelizmente, a opção --rcfile faz com que o ~/.bashrc não seja carregado para esses comandos, portanto, se você precisar de um alias ou algo assim, precisará fazer isso.

cat ~/.bashrc > /tmp/konsolebash; echo "commands" >> /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash

O que apenas copia seu bashrc, em seguida, acrescenta seus comandos ao final dele

    
por 02.12.2013 / 04:02