打开一个新的终端和源脚本

打开一个新的终端和源脚本

我想编写一个脚本来激活虚拟环境并在新终端中运行我的 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>"。这意味着我们执行一个新的bashshell,它应该运行一些-c "<commands>"

  • 我们有两个分隔符(用分号; == new line<commands>

  • 第一个命令source startProject.sh源脚本文件

  • 第二个命令exec bash有一个含义 - 保持打开当前gnome-terminal窗口。另一种可能的方法执行此操作。在当前情况下,命令exec用新的进程映像替换当前进程映像- 换句话说,它将“杀死”当前进程并bash在当前 PID 下执行一个新的()。

进一步阅读:

相关内容