打开新终端和源脚本

Heu*_*yie 4 command-line bash scripts gnome-terminal virtualenv

我想编写一个脚本来激活虚拟环境并在新终端中运行 Django 项目的服务器。我的startProject.sh是:

#!/bin/bash
source virtualenv/bin/activate
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

而且,我可以通过以下方式在当前终端上运行此脚本:

source startProject.sh
Run Code Online (Sandbox Code Playgroud)

我想在脚本打开的新终端中执行此操作。

#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x 'source startProject.sh'
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个。

#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x '#!/bin/bash\n source startProject.sh'
Run Code Online (Sandbox Code Playgroud)

两者都不起作用。为什么?我读了其他问题,但我仍然不明白。我是初学者,所以请假设没有经验。

pa4*_*080 5

根据我的经验,命令应该是:

gnome-terminal --working-directory='/home/<user>/project' -x bash -c "source startProject.sh; exec bash"
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 的路径--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 下执行新的 ( )。

进一步阅读:


归档时间:

查看次数:

9243 次

最近记录:

3 年,8 月 前