저는 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-opens-terminal-windows-and-executes-commands-in-the (참고: 다른 모든 답변을 시도했지만 그 중 아무 것도 작동하지 않았습니다. Gabriel Staples의 답변은 거의 작동한 유일한 답변이었습니다.) 또한 파일이 프로그램으로 실행되도록 허용합니다.
이 솔루션에는 두 가지 문제가 있습니다. 첫째, 터미널이 열려 있지 않습니다. 둘째, 파일을 클릭하면 다음 메시지가 표시됩니다(터미널이 닫히기 전): ModuleNotFoundError: No module named 'flask'
. 이는 스크립트가 이 서버에서 잘못된 버전의 python3을 사용하고 있기 때문입니다. 관리자가 하나를 설치했고 내 홈 디렉토리에 아나콘다 버전이 설치되어 있습니다. 나는 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
/path/to/python3
, 또는 일반 대신 명령에 Python 버전을 명시적으로 지정할 수 있습니다 .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'"