在脚本执行后避免gnome-terminalclosures?

我创build了一个bash脚本,可以打开几个gnometerminal,通过ssh连接到教室电脑并运行脚本。

脚本完成后,如何避免gnome-terminalclosures? 请注意,我也希望能够在terminal中input更多的命令。

这是我的代码的一个例子:

gnome-terminal -e "ssh root@<ip> cd /tmp && ls" 

据我所知,你想gnometerminal打开,让它执行一些命令,然后下降到提示,所以你可以input更多的命令。 Gnometerminal不是为这个用例devise的,但是有一些解决方法:

让gnome-terminal运行bash并告诉bash运行你的命令,然后运行bash

 $ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\"" 

最后的exec bash是必须的,因为一旦命令完成, bash -c就会终止。 exec会导致正在运行的进程被新进程replace,否则你将有两个bash进程在运行。

让gnome-terminal运行一个准备好的rcfile来运行你的命令

准备somercfile

 source ~/.bashrc echo foo echo bar 

然后运行:

 $ gnome-terminal -e "bash --rcfile somercfile" 

让gnome-terminal运行一个脚本来运行你的命令,然后下降到bash

准备scripttobash

 #!/bin/sh echo foo echo bar exec bash 

将此文件设置为可执行。

然后运行:

 $ gnome-terminal -e "./scripttobash" 

或者,您可以制作一个genericscripttobash

 #!/bin/sh for command in "$@"; do $command done exec bash 

然后运行:

 $ gnome-terminal -e "./genericscripttobash \"echo foo\" \"echo bar\"" 

每种方法都有它的怪癖。 你必须select,但明智的select。 我喜欢第一个解答冗长而直接的方法。

所有这一切,这可能是很好的使用你: http : //www.linux.com/archive/feature/151340

  • 堆栈溢出回答:terminal在其内部运行命令完成时closures,因此您需要编写一个不立即终止的命令。 例如,要使terminal窗口保持打开状态,直到您按下Enter

     gnome-terminal -e "ssh host 'cd /tmp && ls'; read line" 
  • 超级用户答案:创build一个configuration文件,其中“标题和命令/当命令退出”的首选项设置为“保持terminal打开”。 用--window-with-profile--tab-with-profile选项调用gnome-terminal来指定terminal名称。

最后这个为我工作:

 gnome-terminal --working-directory=WORK_DIR -x bash -c "COMMAND; bash" 

使用-ic运行代替-i在closuresterminalgui时使terminalclosuresbash进程:

 gnome-terminal -e "bash -ic \"echo foo; echo bar; exec bash\"" 

理想的解决scheme是要求回声“ 按任意键 ”的用户input。

但是,如果在Nautis或Nemo中双击并select在terminal中运行,似乎不起作用。

Ubuntu的情况下使用一个shelldevise为快速启动和执行只有标准function被使用,命名为破折号我相信。 正因为如此,shebang是开始使用bashfunction的第一行。 通常这会是:#!/ bin / bash或类似的。 在Ubuntu中,我了解到这应该是:#!/ usr / bin / env bash。

在解释器在bash命令中看到语法错误之前,有很多解决方法可以保持屏幕不变。

在Ubuntu的解决scheme,为我工作:

 #!/usr/bin/env bash your code echo Press a key... read -n1 

如果运行一个bash脚本,只需将gedit afile添加到脚本的末尾,这将使gnome-terminal保持打开状态。 “afile”可能是一个build立日志,这是我的情况。

没有尝试只使用gedit ,但是,这也将正常工作。

使用nohup命令。

 nohup gnome-terminal -e "ssh root@ cd /tmp && ls" 

希望这会帮助你。