chama múltiplas funções em múltiplos terminais

6

Estou definindo uma função no meu .bashrc que estou usando para chamar várias outras funções.

function startday {
    irene 
}

Isso funciona, ( irene é uma função definida e originada) No entanto, quero executar isso em outro terminal.

function startday {
    gnome-terminal -c "irene"
}

diz Failed to execute child process "irene" (No such file or directory)

irene ativa um virtualenv, então eu quero que o terminal não saia depois de executar o comando. (Escusado será dizer que simplesmente executar irene no terminal executa a função com sucesso.)

    
por Darshan Chaudhary 12.08.2016 / 10:35

1 resposta

1

Na minha versão do terminal do gnome

$ gnome-terminal --version
GNOME Terminal 3.22.0

Eu não tenho a opção -c , mas tenho a opção -x ou -e

No entanto, se você quiser iniciar gnome-terminal executando a função interna originada em .bashrc, tente fazê-lo desta maneira:

gnome-terminal -x "bash" -ic "irene"

Anote que a opção -i do bash garantirá que seu .bashrc seja avaliado e, portanto, a função irene esteja disponível.

Por favor também note , que depois que a função irene terminar sua operação, gnome-terminal parará. Você pode considerar a execução de alguns comandos após irene , como por exemplo:

gnome-terminal -x "bash" -ic "irene; sleep 2;" # wait 2 seconds after "irene" stops

ou

gnome-terminal -x "bash" -ic "irene; bash;" # run NEW instance of bash after "irene" stops

Se a função irene definir algumas variáveis ambientais, elas poderão ser acessíveis nesta NOVA instância do bash somente se você as exportar .

function irene() {
   # ...some code
   export variable="value of variable"
   # ...some code
}

em vez de

function irene() {
   # ...some code
   variable="value of variable"
   # ...some code
}
    
por aNeutrino 11.10.2016 / 03:10