linux - 以编程方式打开 Gnome 终端并运行命令

标签 linux bash shell

如何以编程方式打开终端应用程序,如 Gnome 终端,并运行 cd/some/path;来源./setup.bash?我正在尝试编写一个脚本,该脚本将自动启动一些常用终端和 IDE 以供工作。

我试过:

gnome-terminal --tab --working-directory="/some/path" -e 'source ./setup.bash'

但这会启动一个 gnome 终端窗口,但该窗口显示错误:

Failed to execute child process "source" (No such file or directory)

大概是因为它没有在 bash 中执行命令,所以我改为尝试:

gnome-terminal --tab --working-directory="/some/path" -e 'bash -c "source ./setup.bash"'

然而,这似乎什么都不做。它不启动任何窗口,也不产生任何 stdout 或 stderr 输出。

我能得到的最接近的是:

gnome-terminal --tab --working-directory="/some/path" -e 'bash -c "source ./setup.bash; bash -i"'

这启动了 gnome-terminal 并且似乎源代码 setup.bash 正确,但是一些由 setup.bash 设置的终端格式没有显示,大概是因为我正在启动一个新的 bash shell。

有没有更好的办法?

最佳答案

当你使用 -e 选项时,gnome-terminal 将运行该命令而不启动新的 shell(你甚至可以运行类似:gnome-terminal -e gedit),所以如果你想在 bash 中运行命令进入一个新的终端/标签你必须做这样的事情:

gnome-terminal -x bash -c "command"

但请注意,当“命令”结束时,终端/选项卡也将结束。

关于linux - 以编程方式打开 Gnome 终端并运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44293120/

相关文章:

linux - 为什么在使用 Vagrant shell 脚本配置 Ubuntu VM 期间不执行脚本?

c - bind() 函数根本没有执行,测试时没有输出

C : String comparing

linux - "crontab"与 "crontab -"当管道进入时?

bash,如何选择是否通过变量附加重定向(根据 $append 使用 > 或 >>)

bash - 为什么我无法在脚本中使用 "cd"更改目录?

bash - 从具有二进制模式字符串的文件中删除行

java - 无法在 Linux 上加载 OpenCV - undefined symbol 错误

bash - 解释 bash/pipe 表达式中的最后一个破折号

linux - 尾部最后修改的文件并监视 bash 中的新文件