Abra o novo terminal e execute o script com duplo clique no Unity

0

Eu quero executar

expect -c "
    spawn ssh [email protected]
    expect \"assword:\"
    send \"pass\r\"
    interact "

em um novo terminal, clicando duas vezes em um script .sh.

Eu tentei

#!/bin/bash

commands () {
    expect -c "
    spawn ssh [email protected]
    expect \"assword:\"
    send \"pass\r\"
    interact "
    $SHELL # keep the terminal open after the previous commands are executed
}

export -f commands

gnome-terminal -e "bash -c 'commands'"

sem sorte. Alguma idéia?

    
por user1532587 05.04.2015 / 23:28

1 resposta

0

  1. Você pode usar o gnome-terminal com a opção --disable-factory que faz:

    "Não se registre no servidor de nomes de ativação e não reutilize um processo de terminal GNOME já em execução"

    Ele deixará a variável de ambiente 'commands' passar.

    O

    gnome-terminal normalmente é executado em um modo de servidor. O primeiro lançamento inicia um processo, o próximo lançamento envia mensagens para o processo principal para abrir uma nova janela. Então, env vars são definidos apenas no primeiro lançamento.

  2. Você pode usar um arquivo de script separado e passar seu nome de arquivo para bash. Ou seja inteligente: detecte dentro deste script seu nome de arquivo atual e passe-o para o bash, assim ele chamará esse mesmo script dentro do gnome-terminal (mas passe um parâmetro para pegar um caminho de código diferente).

  3. Você pode colocar tudo em uma variável, mas certifique-se de que ela se expande antes da chamada para o terminal gnome.

por Velkan 06.04.2015 / 00:11