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

5

如何通过编程的方式打开终端应用程序,比如 Gnome 终端,并运行 cd /some/path; source ./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。

有更好的方法吗?

2个回答

2
当你使用-e选项时,gnome-terminal将在不启动新shell的情况下运行该命令(你甚至可以运行如:gnome-terminal -e gedit之类的东西)。因此,如果你想在新的终端/选项卡中运行一个bash shell中的命令,你需要像这样做:
gnome-terminal -x bash -c "command"

但是请注意,当"command"结束时,终端/选项卡也将结束。


这似乎不起作用。如果我尝试 gnome-terminal --tab --working-directory="/some/path" -x 'bash -i -c "source ./setup.bash"',我会得到错误 Failed to execute child process "bash -i -c "source ./setup.bash""。正如我在问题中所暗示的那样,我不希望选项卡结束。 - Cerin
你尝试过像下面这样吗?gnome-terminal -x "bash" -c "command" 对我有效。请注意-x参数值上的引号。 - Harini

1

您可以指定bash启动文件来设置变量。您可能希望该文件中包含source $HOME/.bashrc:

$ gnome-terminal --working-directory="/some/path" -e 'bash --rcfile ./setup.bash -c gdb'

你可以在其中加入一个命令,就像我加了-c gdb一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接