我想编写一个脚本来激活虚拟环境并在新终端中运行我的 Django 项目服务器。我的 startProject.sh 是:
#!/bin/bash
source virtualenv/bin/activate
python manage.py runserver
并且,我可以通过以下方式在当前终端上运行该脚本:
source startProject.sh
我想在脚本打开的新终端中执行此操作。
#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x 'source startProject.sh'
我也尝试过这个。
#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x '#!/bin/bash\n source startProject.sh'
两者都不起作用。为什么?我读了其他问题,但还是不明白。我是初学者,所以请假设我没有经验。
答案1
根据我的经验,命令应该是:
gnome-terminal --working-directory='/home/<user>/project' -x bash -c "source startProject.sh; exec bash"
笔记:
路径
--working-directory='/home/<user>/project'
用单引号引起来,以防路径中包含空格等特殊字符。选项
-x
含义是:执行——终端内命令行的其余部分。我们的命令是
bash -c "<commands>"
。这意味着我们执行一个新的bash
shell,它应该运行一些-c "<commands>"
。我们有两个分隔符(用分号
; == new line
)<commands>
。第一个命令
source startProject.sh
将源脚本文件。第二个命令
exec bash
有一个含义 - 保持打开当前gnome-terminal
窗口。另一种可能的方法执行此操作。在当前情况下,命令exec
将用新的进程映像替换当前进程映像- 换句话说,它将“杀死”当前进程并bash
在当前 PID 下执行一个新的()。
进一步阅读: