Abra um novo terminal e scripts de origem

1

Eu quero escrever um script para ativar um ambiente virtual e executar meu servidor para o projeto Django em um novo terminal. Meu startProject.sh é:

#!/bin/bash
source virtualenv/bin/activate
python manage.py runserver

E posso executar este script no meu terminal atual:

source startProject.sh

Eu quero fazer isso em um novo terminal aberto por um script.

#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x 'source startProject.sh'

Eu também tentei isso.

#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x '#!/bin/bash\n source startProject.sh'

Ambos não funcionam. Por quê? Eu li outras perguntas, mas eu ainda não entendi. Eu sou um iniciante, então, por favor, não assuma nenhuma experiência.

    
por Heuyie 17.10.2017 / 19:14

1 resposta

1

De acordo com minha experiência, o comando deve ser:

gnome-terminal --working-directory='/home/<user>/project' -x bash -c "source startProject.sh; exec bash"

Notas:

  • O caminho de --working-directory='/home/<user>/project' é colocado entre aspas simples, caso contenha alguns caracteres especiais como espaços, etc.

  • A opção -x significa: execute - o restante da linha de comando dentro do terminal.

  • E nosso comando é bash -c "<commands>" . Isso significa que executamos um novo bash shell, que deve executar alguns -c "<commands>" .

  • Temos dois separados (por semicolon ; == new line ) <commands> .

  • O primeiro comando source startProject.sh fonte do script arquivo .

  • O segundo comando exec bash tem um significado - continue aberto na janela atual gnome-terminal . Existem outras abordagens possíveis para fazer isso. No caso atual, o comando exec irá substituir a imagem do processo atual por uma nova imagem do processo - em outras palavras, "matará" o processo atual e executará um novo ( bash ) sob o atual PID.

Leitura adicional:

por pa4080 22.10.2017 / 20:36