拜托,
有人可以为我的档案提供一些线索.xinitrc吗?我很难找到一本好的手册来回答我的几个实际问题:
exec而有些则不需要?exec命令到底是什么?xinitrc?大多数主流发行版的用户甚至不必了解xinitrc,对我来说也是如此,直到我不得不设置 Kodi“临时”shell;使用超级简约的窗口管理器 TWM 并全屏启动 Kodi,因为kodi-standaloneshell 不适合我。
但回到xinitrc:
工作示例:
#!/bin/bash
/usr/bin/twm &
sleep 1
exec xterm
Run Code Online (Sandbox Code Playgroud)
为什么twm不需要但sleep需要? execxterm
不工作示例:
#!/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 次 |
| 最近记录: |