我正在使用科学Linux(版本= 7.6(氮))的远程服务器中工作。我用Python3做了一个简单的Web应用程序,发现自己不断打开Mate Terminal(尽管任何终端都能工作),然后编写
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-的(注:我尝试了所有其他的答案,他们没有工作,加布里埃尔斯台普斯的答案是唯一一个几乎工作)。我还允许该文件作为程序执行。
该解决方案有两个问题。首先,终端不会保持打开状态。第二,当我点击该文件I接收下面的信息(前终端关闭时): ModuleNotFoundError: No module named 'flask'
。这是因为脚本在此服务器中使用了错误版本的python3。管理员安装了一个,我自己的主目录中安装了anaconda版本。bash
在使用之前,我已经通过写写解决了这个问题python3 my_app.py
。看来,在我使用bash
主目录中的文件.bashrc之后,该变量$PATH
将优先于我的python3版本(在终端中$PATH
写入之前和之后,我检查了该版本是否不同bash
)。
我想知道是否有一种方法可以使脚本(在Scientific Linux上)打开终端窗口并在其中执行命令,然后保持打开状态。
我还想知道之后是否有一种方法可以自动在浏览器中弹出Web应用程序。
命令完成后,终端将关闭。为了使终端保持打开状态,通常会阻止脚本完成,例如,出现以下提示:
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'"
对于正在使用错误的蟒蛇,你可以加载~/.bashrc
使用 bash -i
,或者你可以明确地指定Python版本/path/to/python3
,而不是简单的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'"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句