¿Cómo puedo crear un script que abra una ventana de terminal, ejecute comandos en ella y permanezca abierto en Scientific Linux?

¿Cómo puedo crear un script que abra una ventana de terminal, ejecute comandos en ella y permanezca abierto en Scientific Linux?

Estoy trabajando en un servidor remoto que usa Scientific Linux (versión = 7.6 (Nitrogen)). Hice una aplicación web simple en Python3 y me encontré constantemente abriendo una Terminal Mate (aunque cualquier terminal funciona) y escribiendo

bash
python3 my_app.py

Entonces puedo verificar si mi aplicación funciona localmente en mi navegador.

Quiero una manera de hacer esto más fácil y simplemente hacer clic en un script de shell que abra una ventana de terminal y ejecute los comandos mencionados. Después de eso, la ventana de la terminal debería permanecer abierta y debería poder verificar mi aplicación web en el navegador.

Escribí un script de shell con esta línea:

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

Como se recomienda aquí, en el caso de Ubuntu:https://askubuntu.com/questions/46627/how-can-i-make-a-script-that-open-terminal-windows-and-executes-commands-in-the (Nota: probé todas las demás respuestas y no funcionaron, la respuesta de Gabriel Staples fue la única que casi funcionó). También permití que el archivo se ejecutara como programa.

Hay 2 problemas con esta solución. En primer lugar, la terminal no permanece abierta. En segundo lugar, cuando hago clic en el archivo, recibí el siguiente mensaje (antes de que se cierre la terminal): ModuleNotFoundError: No module named 'flask'. Esto se debe a que el script utiliza la versión incorrecta de python3 en este servidor. Hay uno instalado por el administrador y la versión anaconda que instalé yo en mi directorio de inicio. He solucionado este problema escribiendo bashantes de usar python3 my_app.py. Parece que después de usar bashel archivo .bashrc en mi directorio de inicio se usa, y la variable $PATHle da prioridad a mi versión de python3 (verifiqué que $PATHes diferente antes y después de escribir bashen la terminal).

Me preguntaba si hay una manera de crear un script (en Scientific Linux) que abra una ventana de terminal y ejecute comandos en ella, y luego permanezca abierto.

También me preguntaba si hay alguna manera de que la aplicación web aparezca automáticamente en mi navegador después de esto.

Respuesta1

La terminal se cerrará después de que se complete el comando. Para dejar la terminal abierta, generalmente evito que se complete el script, por ejemplo, con el siguiente mensaje:

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

Por lo tanto, para su secuencia de comandos, agregue esto al final del 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'"

Si se utiliza el Python incorrecto, puede cargar~/.bashrc mediante el uso bash -i, o puede especificar explícitamente la versión de Python en /path/to/python3lugar de simple python3en su comando.

Por lo tanto, su orden final es

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'"

o

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'"

información relacionada