Mar*_*uer 61 linux ssh bash shell
我创建了一个打开几个gnome终端的bash脚本,通过ssh连接到教室计算机并运行脚本.
如何在脚本完成后避免gnome-terminal关闭?请注意,我还希望能够在终端中输入更多命令.
这是我的代码示例:
gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
Run Code Online (Sandbox Code Playgroud)
les*_*ana 86
据我所知,你想让gnome-terminal打开,让它执行一些命令,然后放到提示符下,这样你就可以输入更多的命令了.Gnome-terminal不是为这个用例而设计的,但有一些解决方法:
$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
Run Code Online (Sandbox Code Playgroud)
在exec bash因为到底是必要的bash -c,一旦命令完成了将终止.exec导致正在运行的进程被新进程替换,否则您将运行两个bash进程.
rcfile并运行你的命令准备somercfile:
source ~/.bashrc
echo foo
echo bar
Run Code Online (Sandbox Code Playgroud)
然后运行:
$ gnome-terminal -e "bash --rcfile somercfile"
Run Code Online (Sandbox Code Playgroud)
准备scripttobash:
#!/bin/sh
echo foo
echo bar
exec bash
Run Code Online (Sandbox Code Playgroud)
将此文件设置为可执行文件
然后运行:
$ gnome-terminal -e "./scripttobash"
Run Code Online (Sandbox Code Playgroud)
或者你可以做一个genericscripttobash:
#!/bin/sh
for command in "$@"; do
$command
done
exec bash
Run Code Online (Sandbox Code Playgroud)
然后运行:
$ gnome-terminal -e "./genericscripttobash \"echo foo\" \"echo bar\""
Run Code Online (Sandbox Code Playgroud)
每种方法都有它的怪癖.你必须选择,但明智地选择.我喜欢它的冗长和直截了当的第一个解决方案.
总而言之,这可能对您有用:http://www.linux.com/archive/feature/151340
Luk*_*ski 13
最后这个对我有用:
gnome-terminal --working-directory=WORK_DIR -x bash -c "COMMAND; bash"
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 11
Stack Overflow answer:终端在其内部运行的命令完成后关闭,因此您需要编写一个不会立即终止的命令.例如,要将终端窗口保持打开状态,直到您按下Enter它:
gnome-terminal -e "ssh host 'cd /tmp && ls'; read line"
Run Code Online (Sandbox Code Playgroud)超级用户答案:创建一个配置文件,其中首选项"标题和命令/何时命令退出"设置为"保持终端打开".使用--window-with-profile或--tab-with-profile选项调用gnome-terminal 以指定终端名称.
当你关闭你的终端gui时,用run -ic来运行-i终端关闭bash进程:
gnome-terminal -e "bash -ic \"echo foo; echo bar; exec bash\""
Run Code Online (Sandbox Code Playgroud)
小智 5
截至 2020 年 1 月,该-e选项gnome-terminal仍然可以正常运行,但会抛出以下警告:
为了-e:
\n\n\n# 选项 \xe2\x80\x9c-e\xe2\x80\x9d 已弃用,可能会在更高版本的 gnome-terminal 中删除。
\n\n# 使用 \xe2\x80\x9c-- \xe2\x80\x9d 终止选项并将命令行放在\n 之后执行。
\n
根据上述信息,我确认您可以运行以下两个命令而不会收到任何警告消息:
\n\n$ gnome-terminal -- "./scripttobash"\nRun Code Online (Sandbox Code Playgroud)\n\n$ gnome-terminal -- "./genericscripttobash \\"echo foo\\" \\"echo bar\\""\nRun Code Online (Sandbox Code Playgroud)\n\n我希望这对目前遇到此问题的其他人有所帮助:)
\n| 归档时间: |
|
| 查看次数: |
59606 次 |
| 最近记录: |