
Я работаю на удаленном сервере, который использует 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'"