Como exportar / source /. de mate -e?

4

Estou tentando escrever um script simples que inicie um terminal e execute o comando workon foo . Em outras palavras, eu só quero fazer:

mate-terminal -e workon foo

No entanto, isso não funciona porque o comando workon exige que eu faça primeiro:

export WORKON_HOME=~/work;
source /usr/local/bin/virtualenvwrapper.sh

Normalmente, essas linhas são executadas automaticamente porque estão no meu .bashrc , mas, evidentemente, mate-terminal -e não faz um source ~/.bashrc . No entanto, se eu tentar adicionar essas linhas ao meu script:

mate-terminal -e export WORKON_HOME=~/work; source /usr/local/bin/virtualenvwrapper.sh; workon foo

também não funciona. MATE me diz:

There was an error creating the child process for this terminal
Failed to execute child process "export" (No such file or directory)

Eu tenho o mesmo problema se pular o export e apenas mate-terminal -e source ... ou se eu tentar usar . em vez de source ( mate-terminal -e . ... ).

Não tenho certeza de como posso carregar nada se não puder, export , source ou . , mas deve haver alguma maneira porque mate-terminal -e seria quase inútil sem ela.

Alguém sabe como eu posso configurar meu ambiente em um terminal iniciado com mate-terminal -e ?

    
por machineghost 25.08.2015 / 19:22

2 respostas

2

Eu não tenho uma versão instalada de mate-terminal , mas se ela funciona de forma semelhante a gnome-terminal , você pode tentar uma das seguintes maneiras:

  • para escrever diretamente algo como
    mate-terminal -e bash -c 'WORKON_HOME=$HOME/work; source /usr/local/bin/virtualenvwrapper.sh; workon foo'
    ou mate-terminal -e "bash -c 'WORKON_HOME=$HOME/work; source /usr/local/bin/virtualenvwrapper.sh; workon foo; read line'"

    (para ser honesto em gnome-terminal , você deve usar -x em vez de -e ).

  • Para criar seu script executável (denominado WorkOnScript.sh , com chmod u+x WorkOnScript.sh )

    #!/bin/bash 
    WORKON_HOME=$HOME/work;
    source /usr/local/bin/virtualenvwrapper.sh
    cd $HOME/work                                          # If needed
    workon foo
    sleep 10s         # to add  a pause before script and terminal end
    read line         # to wait you press return to close the terminal
    

    e tentar executá-lo com

     mate-terminal -e /path/to/WorkOnScript.sh
    

    ou

     mate-terminal -e "/bin/bash -c \"/path/to/WorkOnScript.sh\""
    

Nota

É possível manter o terminal aberto adicionando como último comando na string passada para bash -c ou como última linha do script:

  • por alguns segundos (ou horas ...) adicionando sleep 10s (ou dormir 10h).
  • até que seja pressionado retornar adicionando read line
  • até que ctrl + d ou saia seja pressionado adicionando /bin/bash (executa um shell).

Com algum terminal via especificação de parâmetro é possível mantê-lo aberto após a execução dos comandos. Com o mate-terminal, você pode tentar ver o que é interessante em mate-terminal --help-all . Depois disso você criou um perfil com "Mantenha o terminal" verificado você pode invocar o terminal com a opção --window-with-profile=PROFILENAME ou --tab-with-profile=PROFILENAME

Referências

por 07.09.2015 / 14:49
2

Que tal você executar em um script?

crie seu script:

touch ~/myscript.sh
chmod 700 ~/myscript.sh
vi ~/myscript.sh

edite-o para o que você deseja fazer. No vi use i para inserir e tenha cuidado ao usar backspace, use ESC e X para excluir. Então faça ESC e depois ! Qw para salvar e sair:

#!/bin/bash
export WORKON_HOME=~/work;
source /usr/local/bin/virtualenvwrapper.sh
mate-terminal -e workon foo

tente e execute:

./myscript.sh
    
por 25.08.2015 / 19:39