如何製作一個腳本來開啟終端機視窗、在其中執行命令並在 Scientific Linux 上保持開啟?

如何製作一個腳本來開啟終端機視窗、在其中執行命令並在 Scientific Linux 上保持開啟?

我正在使用 Scientific Linux(版本=7.6(Nitrogen))的遠端伺服器上工作。我用 Python3 做了一個簡單的 Web 應用程序,我發現自己不斷打開 Mate 終端(儘管任何終端都可以),並編寫

bash
python3 my_app.py

因此,我可以檢查我的應用程式是否在本機瀏覽器中運行。

我想要一種方法來簡化此操作,只需單擊一個 shell 腳本即可打開終端機視窗並執行提到的命令。之後,終端機視窗應保持開啟狀態,我應該能夠在瀏覽器中檢查我的 Web 應用程式。

我用這一行寫了一個 shell 腳本:

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-opens-terminal-windows-and-executes-commands-in-the (附註:我嘗試了所有其他答案,但它們都不起作用,加布里埃爾·史台普斯的答案是唯一幾乎起作用的答案)。我還允許該文件作為程式執行。

該解決方案有兩個問題。首先,終端不會保持開放狀態。其次,當我單擊該文件時,我收到以下訊息(在終端關閉之前):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'"

相關內容