脚本执行后避免gnome-terminal关闭?

时间:2010-08-18 12:30:09

标签: linux bash shell ssh

我创建了一个打开几个gnome终端的bash脚本,通过ssh连接到教室计算机并运行脚本。

如何在脚本完成后避免gnome-terminal关闭?请注意,我还希望能够在终端中输入更多命令。

以下是我的代码示例:

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

9 个答案:

答案 0 :(得分:85)

据我所知,你想让gnome-terminal打开,让它执行一些命令,然后放到提示符下,这样你就可以输入更多的命令了。 Gnome-terminal不是为这个用例而设计的,但有一些解决方法:

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

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

最后exec bash是必要的,因为bash -c将在命令完成后终止。 exec导致正在运行的进程被新进程替换,否则您将运行两个bash进程。

让gnome-terminal运行bash,其中包含运行命令的准备好的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\""

每种方法都有它的怪癖。你必须选择,但明智地选择。我喜欢它的冗长和直截了当的第一个解决方案。

所有这一切,这可能对你有用:http://www.linux.com/archive/feature/151340

答案 1 :(得分:13)

最后这个对我有用:

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

答案 2 :(得分:11)

  • Stack Overflow answer:终端在其内部运行的命令完成后关闭,因此您需要编写一个不会立即终止的命令。例如,要打开终端窗口,直到在其中按 Enter

    gnome-terminal -e "ssh host 'cd /tmp && ls'; read line"
    
  • Super User回答:创建一个配置文件,其中首选项“Title and Command / When命令退出”设置为“保持终端打开”。使用--window-with-profile--tab-with-profile选项调用gnome-terminal以指定终端名称。

答案 3 :(得分:5)

当您关闭终端gui时,使用-ic代替-i进行终端关闭bash过程:

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

答案 4 :(得分:0)

理想的解决方案是要求用echo输入用户输入&#34; 按任意键&#34;。

但如果双击Nautis或Nemo并选择在终端中运行,它似乎无法正常工作。

对于 Ubuntu ,使用了一个专为快速启动和仅使用标准功能执行的shell,我相信名为dash。 因此,shebang是正确使用bash功能的第一行。 通常这将是:#!/ bin / bash或类似的。 在Ubuntu中,我了解到这应该是:#!/ usr / bin / env bash。

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

Ubuntu中的解决方案对我有用:

#!/usr/bin/env bash

your code

echo Press a key...
read -n1

答案 5 :(得分:0)

截至2020年1月,-e中的gnome-terminal选项仍可正常运行,但会抛出以下警告:

对于-e

#不建议使用选项“ -e”,在更高版本中可能会删除它 gnome-terminal。

#使用“-”终止选项并将命令行放入 之后执行。

根据上述信息,我确认您可以运行以下两个命令而不会收到任何警告消息:

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

我希望这对目前遇到此问题的其他人有所帮助:)

答案 6 :(得分:0)

对于适用于任何终端的解决方案,有一个脚本可以打开终端,运行指定的命令,并在该新终端中提示您:

https://stackoverflow.com/a/60732147/1272994

答案 7 :(得分:-3)

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

没有尝试单独使用gedit,但这也适用。

答案 8 :(得分:-5)

使用nohup命令。

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

希望这会对你有所帮助。