Как создать скрипт, который открывает окно терминала, выполняет в нем команды и остается открытым в Scientific Linux?

Как создать скрипт, который открывает окно терминала, выполняет в нем команды и остается открытым в Scientific Linux?

Я работаю на удаленном сервере, который использует Scientific Linux (версия=7.6 (Nitrogen)). Я сделал простое веб-приложение на Python3, и я обнаружил, что постоянно открываю терминал Mate (хотя любой терминал подходит) и пишу

bash
python3 my_app.py

Таким образом, я могу проверить, работает ли мое приложение локально в моем браузере.

Я хочу способ сделать это проще, и просто щелкнуть скрипт оболочки, который открывает окно терминала и запускает упомянутые команды. После этого окно терминала должно оставаться открытым, и я должен иметь возможность проверить свое веб-приложение в браузере.

Я написал скрипт оболочки со следующей строкой:

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

Как здесь рекомендуется, в случае Ubuntu:https://askubuntu.com/questions/46627/how-can-i-make-a-script-that-opening-terminal-windows-and-executes-commands-in-the (Примечание: я попробовал все остальные ответы, но они не сработали, ответ Габриэля Стейплза был единственным, который почти сработал.) Я также разрешил файлу выполняться как программе.

С этим решением есть 2 проблемы. Во-первых, терминал не остается открытым. Во-вторых, когда я нажимаю на файл, я получаю следующее сообщение (до того, как терминал закрывается): ModuleNotFoundError: No module named 'flask'. Это происходит потому, что скрипт использует неправильную версию python3 на этом сервере. Есть версия, установленная администратором, и версия anaconda, установленная мной в моем домашнем каталоге. Я обхожу эту проблему, записывая bashперед использованием python3 my_app.py. Кажется, что после того, как я использую bashфайл .bashrc в моем домашнем каталоге, используется переменная, и $PATHприоритет отдается моей версии python3 (я проверил, что $PATHона отличается до и после того, как я пишу bashв терминале).

Мне было интересно, есть ли способ создать скрипт (в Scientific Linux), который открывает окно терминала и выполняет в нем команды, а затем остается открытым.

Мне также было интересно, есть ли способ сделать так, чтобы после этого веб-приложение автоматически открывалось в моем браузере.

решение1

Терминал закроется после завершения команды. Чтобы оставить терминал открытым, я обычно предотвращаю завершение скрипта, например, с помощью следующего приглашения:

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

Поэтому для вашего скрипта добавьте это в конец команды bash -c.

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

Если используется неправильный Python, вы можете либо загрузить~/.bashrc используя bash -iили вы можете явно указать версию Python с помощью /path/to/python3вместо plain python3в вашей команде.

Следовательно, ваша последняя команда — либо

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

или

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

Связанный контент