如果您已经在gnome-terminal
运行,并且想要一个新的程序实例,您可能会认为gnome-terminal &
从 shell运行就可以解决问题。
令人惊讶的是,这个新实例的行为就像一些乏味的 Windows 或 Mac 程序;它只向现有的发送消息,运行gnome-terminal
以创建一个新窗口。如果这一gnome-terminal
进程崩溃,您将丢失所有终端窗口!
(当然,每个窗口都有自己的外壳,它是一个独立的进程,但实际的终端模拟器及其 GUI 是由应用程序的单个实例管理的。)
我们如何创建 的独立实例gnome-terminal
,每个实例都在自己的进程中运行,以便杀死该进程只会破坏与该进程关联的窗口?
要在 gedit 中打开要编辑的文件,我运行gedit sample.py &
. 但是对于 Sublime Text,它很简单subl sample.py
。这将打开要编辑的文件,并且它不会在后台运行(在我的 shell 中)。
我将如何使用 gedit 做到这一点?
我尝试过exec /usr/bin/gedit "$@"
(从 复制/usr/bin/subl
)但它的工作原理类似于gedit &
。
或者alias ged="gedit $file &"
应该做。我可以用$file
别名替换什么?
openSUSE Leap 42.2 Gnome 终端 3.20.2
我打开了一个终端窗口。如果我输入以下命令:
gnome-terminal
Run Code Online (Sandbox Code Playgroud)
作为非 root 用户,它成功启动了一个新终端。
但是,如果我以 root 身份运行该命令,则会收到以下错误消息:
为 org.gnome.Terminal:/org/gnome/Terminal/Factory0 构建代理时出错:连接已关闭
如果我尝试启动终端,dbus-launch gnome-terminal
那么它就可以工作。
什么阻止gnome-terminal
命令以 root 身份启动终端?并且是dbus-launch
可接受的解决方法还是可能导致无法预见的问题(我真的不明白它在做什么)?
你能解释netstat
输出中的以下几行吗?
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] STREAM CONNECTED 37133819 /tmp/.lxterminal-socket:0-xralf
unix 2 [ ] STREAM CONNECTED 37109191 /tmp/.lxterminal-socket:0-xralf
Run Code Online (Sandbox Code Playgroud)