拜托,
有人可以为我的档案提供一些线索.xinitrc
吗?我很难找到一本好的手册来回答我的几个实际问题:
exec
而有些则不需要?exec
命令到底是什么?xinitrc
?大多数主流发行版的用户甚至不必了解xinitrc
,对我来说也是如此,直到我不得不设置 Kodi“临时”shell;使用超级简约的窗口管理器 TWM 并全屏启动 Kodi,因为kodi-standalone
shell 不适合我。
但回到xinitrc
:
工作示例:
#!/bin/bash
/usr/bin/twm &
sleep 1
exec xterm
Run Code Online (Sandbox Code Playgroud)
为什么twm
不需要但sleep
需要? exec
xterm
不工作示例:
#!/bin/bash
/usr/bin/twm &
sleep 1
exec WINDOWING=x11 /usr/bin/kodi -geometry +0+0
Run Code Online (Sandbox Code Playgroud)
这里exec
只执行WINDOWING=x11
但忽略了该行的其余部分。我只是通过包装到另一个 Bash 脚本中才使其工作WINDOWING=x11 /usr/bin/kodi -geometry +0+0
,这次是一个普通的脚本,并将该脚本作为 ; 的唯一参数exec
。然后它终于起作用了。
该exec
命令将当前 shell 进程替换为执行给定命令所产生的进程。如果没有exec
,一旦命令终止,控制权将交回等待的 shell 会话。使用 时exec
,当前的 shell 会被替换,因此从那时起,您的脚本将不再运行任何命令。
该~/.xinitrc
文件是一个 shell 脚本。它启动窗口管理器(twm
在您的情况下),以及您可能希望首先启动的其他 X11 客户端(例如xterm
或其他一些终端,并且xeyes
,显然)。除了它应该是一个有效的脚本(因为它是由 shell 脚本解释器运行)之外,该脚本没有特殊的语法。
在第一个示例中,您使用
exec xterm
Run Code Online (Sandbox Code Playgroud)
这会将当前的 shell 进程替换为xterm
. 如果没有exec
,您将获得完全相同的可见效果,但.xinitrc
脚本将在后台徘徊,等待xterm
在自身终止之前终止(因为这是文件中的最后一个命令)。
请注意,如果您完成了exec twm
,shell 会将其自身替换为twm
,这意味着它将无法运行脚本中的其他命令。这就是为什么您改为以后twm
台进程启动(&
最后)的原因。睡眠是为了twm
在启动终端之前正确启动。我认为这并不是绝对必要的。事实上,如果您不需要窗口装饰或能够移动窗口或调整窗口大小,则甚至不需要运行twm
或任何其他窗口管理器(至少不需要运行全屏xterm
)。
在你的第二个例子中,你使用
exec WINDOWING=x11 /usr/bin/kodi -geometry +0+0
Run Code Online (Sandbox Code Playgroud)
现在,该exec
命令不能用于设置这样的环境变量。相反,您可以在调用之前设置并导出WINDOWING
变量:kodi
export WINDOWING=x11
exec /usr/bin/kodi -geometry +0+0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2698 次 |
最近记录: |