Xmonad 终端创建三个进程

Xmonad 终端创建三个进程

我正在配置 xmonad。我将终端更改为terminal="urxvt"但我不喜欢它在我打开的每个终端上生成三个进程:

~$ ps -fea --forest
fake 16042 12136  0 11:22 ?        00:00:00          \_ /bin/sh -c urxvt
fake 16043 16042  0 11:22 ?        00:00:00          |   \_ urxvt
fake 16044 16043  0 11:22 pts/2    00:00:00          |       \_ bash

我该如何修复?我可以删除该/bin/sh -c urxvt进程吗?

答案1

XMonad 内部使用spawn在 XMonad.Core 中

spawn :: MonadIO m => String -> m ()

spawn。启动外部应用程序。具体来说,它会双重分叉并运行您作为命令传递给的字符串/bin/sh

因此,如果只想更改terminal值,而不是executeFile直接使用 say,则必须exec在 shell 命令中使用,terminal="exec urxvt"这将/bin/sh通过使exec命令而不是 shell 作为进程的父级来删除多余的内容。

相关内容