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

新手上路,请多包涵

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

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

这是我的代码示例:

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

原文由 Marten Bauer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
1 个回答

据我了解,您希望 gnome-terminal 打开,让它执行一些命令,然后放到提示符处,以便您可以输入更多命令。 Gnome-terminal 不是为此用例设计的,但有一些解决方法:


让 gnome-terminal 运行 bash 并告诉 bash 运行你的命令,然后启动一个新的 bash

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

或者如果命令在脚本中

$ gnome-terminal -- bash -c "./scripttorun; exec bash"

完成所有命令后,第一个 bash 将终止。但是最后一个命令是一个新的 bash,它将继续运行。而且由于某些东西仍在运行,因此 gnome-terminal 不会关闭。


让 gnome-terminal 使用准备好的 rcfile 运行 bash,它会运行您的命令

准备 somercfile

 source ~/.bashrc
echo foo
echo bar

然后运行:

 $ gnome-terminal -- bash --rcfile somercfile

bash 将在运行 somercfile 后保持打开状态。

我必须承认我不完全理解为什么 --rcfile 有这种行为,但确实如此。


让 gnome-terminal 运行一个脚本,该脚本运行你的命令,然后放到 bash

准备 scripttobash

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

将此文件设置为可执行文件。

然后运行:

 $ gnome-terminal -- ./scripttobash


为了完整性

如果您只想能够读取命令的输出并且不需要交互

  1. 转到首选项(汉堡按钮 - >首选项)
  2. 转到配置文件(标准或创建一个新的)
  3. 转到命令选项卡
  4. 当命令退出时 - >保持终端打开

我建议为这个用例创建一个新的配置文件。

像这样使用配置文件:

 gnome-terminal --profile=holdopen -- ./scripttorun


每种方法都有它的怪癖。你必须选择,但要明智地选择。

我喜欢第一个解决方案。它不需要额外的文件或配置文件。并且命令说明了它的作用:运行命令然后再次运行 bash。

综上所述,由于您在示例中使用了 ssh,您可能想看看 pssh (并行 ssh)。这里有一篇文章: https ://www.cyberciti.biz/cloud-computing/how-to-use-pssh-parallel-ssh-program-on-linux-unix/

原文由 Lesmana 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题