在脚本执行后避免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"
希望这会帮助你。