首页 文章

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

提问于
浏览
58

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

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

这是我的代码示例:

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

7 回答

  • 11

    据我所知,你想让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使用准备好运行命令的rcfile运行bash

    准备 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

  • 82

    最后这个对我有用:

    gnome-terminal --working-directory=WORK_DIR -x bash -c "COMMAND; bash"
    
  • -5
    • Stack Overflow answer:终端在其内部运行的命令完成后关闭,因此您需要编写一个不会立即终止的命令 . 例如,要打开终端窗口,直到按Enter键:
    gnome-terminal -e "ssh host 'cd /tmp && ls'; read line"
    
    • Super User回答:创建一个配置文件,其中首选项“ Headers 和命令/何时命令退出”设置为“保持终端打开” . 使用 --window-with-profile--tab-with-profile 选项调用gnome-terminal以指定终端名称 .
  • 13

    当你关闭你的终端gui时,用 -ic 而不是 -i 来运行终端关闭bash进程:

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

    理想的解决方案是使用echo“ Press any key ”请求用户输入 .

    但如果双击Nautis或Nemo并选择在终端中运行,它似乎不起作用 .

    Ubuntu 的情况下,使用专为快速启动和仅使用标准功能执行的shell,我相信名为dash . 因此,shebang是开始 enable proper use of bash features 的第一条线 . 通常这将是:#!/ bin / bash或类似的 . 在Ubuntu中,我了解到这应该是:#!/ usr / bin / env bash .

    在解释器看到bash命令中的语法错误之前,存在许多解决方法来保持屏幕 .

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

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

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

    没有尝试单独使用 gedit 但是,这也可以正常工作 .

  • -2

    使用nohup命令 .

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

    希望这会帮助你 .

相关问题