我创建了一个打开几个gnome终端的bash脚本,通过ssh连接到教室计算机并运行脚本 .
如何在脚本完成后避免gnome-terminal关闭?请注意,我还希望能够在终端中输入更多命令 .
这是我的代码示例:
gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
据我所知,你想让gnome-terminal打开,让它执行一些命令,然后放到提示符下,这样你就可以输入更多的命令了 . Gnome-terminal不是为这个用例而设计的,但有一些解决方法:
$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
最后 exec bash 是必要的,因为 bash -c 将在命令完成后终止 . exec 导致正在运行的进程被新进程替换,否则您将运行两个bash进程 .
exec bash
bash -c
exec
准备 somercfile :
somercfile
source ~/.bashrc echo foo echo bar
然后运行:
$ gnome-terminal -e "bash --rcfile somercfile"
准备 scripttobash :
scripttobash
#!/bin/sh echo foo echo bar exec bash
将此文件设置为可执行文件
$ gnome-terminal -e "./scripttobash"
或者你可以制作 genericscripttobash :
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
最后这个对我有用:
gnome-terminal --working-directory=WORK_DIR -x bash -c "COMMAND; bash"
gnome-terminal -e "ssh host 'cd /tmp && ls'; read line"
--window-with-profile
--tab-with-profile
当你关闭你的终端gui时,用 -ic 而不是 -i 来运行终端关闭bash进程:
-ic
-i
gnome-terminal -e "bash -ic \"echo foo; echo bar; exec bash\""
理想的解决方案是使用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
如果运行bash脚本,只需将 gedit afile 添加到脚本的末尾,这将使gnome-terminal保持打开状态 . "afile"可能是我的情况下的构建日志 .
gedit afile
没有尝试单独使用 gedit 但是,这也可以正常工作 .
gedit
使用nohup命令 .
nohup gnome-terminal -e "ssh root@ cd /tmp && ls"
希望这会帮助你 .
7 回答
据我所知,你想让gnome-terminal打开,让它执行一些命令,然后放到提示符下,这样你就可以输入更多的命令了 . Gnome-terminal不是为这个用例而设计的,但有一些解决方法:
让gnome-terminal运行bash并告诉bash运行你的命令,然后运行bash
最后
exec bash
是必要的,因为bash -c
将在命令完成后终止 .exec
导致正在运行的进程被新进程替换,否则您将运行两个bash进程 .让gnome-terminal使用准备好运行命令的rcfile运行bash
准备
somercfile
:然后运行:
让gnome-terminal运行一个脚本来运行你的命令然后下降到bash
准备
scripttobash
:将此文件设置为可执行文件
然后运行:
或者你可以制作
genericscripttobash
:然后运行:
每种方法都有它的怪癖 . 你必须选择,但明智地选择 . 我喜欢它的冗长和直截了当的第一个解决方案 .
总而言之,这可能对你有用:http://www.linux.com/archive/feature/151340
最后这个对我有用:
--window-with-profile
或--tab-with-profile
选项调用gnome-terminal以指定终端名称 .当你关闭你的终端gui时,用
-ic
而不是-i
来运行终端关闭bash进程:理想的解决方案是使用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中的解决方案对我有用:
如果运行bash脚本,只需将
gedit afile
添加到脚本的末尾,这将使gnome-terminal保持打开状态 . "afile"可能是我的情况下的构建日志 .没有尝试单独使用
gedit
但是,这也可以正常工作 .使用nohup命令 .
希望这会帮助你 .