我创建了一个打开几个gnome终端的bash脚本,通过ssh连接到教室计算机并运行脚本。
如何在脚本完成后避免gnome-terminal关闭?请注意,我还希望能够在终端中输入更多命令。
以下是我的代码示例:
gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
答案 0 :(得分:85)
据我所知,你想让gnome-terminal打开,让它执行一些命令,然后放到提示符下,这样你就可以输入更多的命令了。 Gnome-terminal不是为这个用例而设计的,但有一些解决方法:
$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
最后exec bash
是必要的,因为bash -c
将在命令完成后终止。 exec
导致正在运行的进程被新进程替换,否则您将运行两个bash进程。
rcfile
准备somercfile
:
source ~/.bashrc
echo foo
echo bar
然后运行:
$ gnome-terminal -e "bash --rcfile somercfile"
准备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)
对于适用于任何终端的解决方案,有一个脚本可以打开终端,运行指定的命令,并在该新终端中提示您:
答案 7 :(得分:-3)
如果运行bash脚本,只需将gedit afile
添加到脚本的末尾,这将使gnome-terminal保持打开状态。 “afile”可能是我的情况下的构建日志。
没有尝试单独使用gedit
,但这也适用。
答案 8 :(得分:-5)