Como posso criar um script que abra a janela do terminal, execute comandos nela e permaneça aberto no Scientific Linux?

Como posso criar um script que abra a janela do terminal, execute comandos nela e permaneça aberto no Scientific Linux?

Estou trabalhando em um servidor remoto que usa Scientific Linux (versão=7.6 (Nitrogen)). Eu fiz uma aplicação web simples em Python3 e me peguei constantemente abrindo um Mate Terminal (embora qualquer terminal funcione) e escrevendo

bash
python3 my_app.py

Assim, posso verificar se meu aplicativo funciona localmente no meu navegador.

Quero uma maneira de tornar isso mais fácil, basta clicar em um script de shell que abre uma janela de terminal e executa os comandos mencionados. Depois disso, a janela do terminal deverá permanecer aberta e eu poderá verificar meu aplicativo web no navegador.

Eu escrevi um script de shell com esta linha:

gnome-terminal --tab --title="tab 1" --command="bash -c 'python3 my_app.py; $SHELL'"

Conforme recomendado aqui, no caso do Ubuntu:https://askubuntu.com/questions/46627/how-can-i-make-a-script-that-opens-terminal-windows-and-executes-commands-in-the (Nota: tentei todas as outras respostas e não funcionaram, a resposta de Gabriel Staples foi a única que quase funcionou). Também permiti que o arquivo fosse executado como programa.

Existem 2 problemas com esta solução. Primeiro, o terminal não permanece aberto. Segundo, quando clico no arquivo recebi a seguinte mensagem (antes do terminal ser fechado): ModuleNotFoundError: No module named 'flask'. Isso ocorre porque o script está usando a versão errada do python3 neste servidor. Existe um instalado pelo administrador e a versão do anaconda instalada por mim em meu diretório pessoal. Tenho contornado esse problema escrevendo bashantes de usar o python3 my_app.py. Parece que depois de usar basho arquivo .bashrc no meu diretório inicial é usado, e a variável $PATHdá prioridade à minha versão do python3 (verifiquei se $PATHé diferente antes e depois de escrever bashno terminal).

Fiquei me perguntando se existe uma maneira de fazer um script (no Scientific Linux) que abra uma janela de terminal e execute comandos nela, e depois disso permaneça aberto.

Eu também queria saber se existe uma maneira de o aplicativo da web aparecer automaticamente no meu navegador depois disso.

Responder1

O terminal será fechado após a conclusão do comando. Para deixar o terminal aberto, geralmente evito a conclusão do script, por exemplo, com um prompt como segue:

while [[ \$response != q ]]; do read -n 1 -p [q]uit? response; echo; done

Portanto, para o seu script, anexe isso ao final do bash -ccomando.

gnome-terminal --tab --title="tab 1" --command="bash -c 'python3 my_app.py; $SHELL'; 'while [[ \$response != q ]]; do read -n 1 -p [q]uit? response; echo; done'"

Para o python errado sendo usado, você pode carregar~/.bashrc usando bash -i, ou você pode especificar explicitamente a versão do python em /path/to/python3vez de simples python3em seu comando.

Portanto, seu comando final é

gnome-terminal --tab --title="tab 1" --command="bash -ci 'python3 my_app.py; $SHELL'; 'while [[ \$response != q ]]; do read -n 1 -p [q]uit? response; echo; done'"

ou

gnome-terminal --tab --title="tab 1" --command="bash -c '/path/to/python3 my_app.py; $SHELL'; 'while [[ \$response != q ]]; do read -n 1 -p [q]uit? response; echo; done'"

informação relacionada