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 bash
antes de usar python3 my_app.py
. Parece que después de usar bash
el archivo .bashrc en mi directorio de inicio se usa, y la variable $PATH
le da prioridad a mi versión de python3 (verifiqué que $PATH
es diferente antes y después de escribir bash
en 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 -c
comando.
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/python3
lugar de simple python3
en 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'"