On Sat, Jul 05, 2025 at 07:25:28PM -0300, sebastien peterson boudreau wrote:
> The double-fork fed into the shell at the end of the pipeline causes the
> process to be orphaned and thus adopted by init.
>
> Upsides:
> - Removes unnecessary shell processes, especially for long-running
> processes that may be started with dmenu_run
> - Makes pstree(1) output look nicer ;)
>
> Downsides(?):
> - dmenu_run script is less simple :(
> - if the user is using a non-Bourne shell (without '(..) &' as syntax),
> the script breaks because we are piping Bourne shell syntax into
> ${SHELL:-"/bin/sh"} -- the whole reason we use $SHELL is so users can
> type shell commands into dmenu_run; this would still be possible, but
> now we only support users using a Bourne-compatible shell !
>
> I don't know if this is really worth it at all, but I saw the /bin/sh in
> my pstree output and wanted to see if I could tweak this to get rid of
> it :p
>
> if there is a method to do this which is portable across shells it may
> be worth it to do that.
> ---
> dmenu_run | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/dmenu_run b/dmenu_run
> index 834ede5..b7b3aca 100755
> --- a/dmenu_run
> +++ b/dmenu_run
> _AT_@ -1,2 +1,2 @@
> #!/bin/sh
> -dmenu_path | dmenu "$_AT_" | ${SHELL:-"/bin/sh"} &
> +echo '( ' $(dmenu_path | dmenu "$_AT_") ') &' | ${SHELL:-"/bin/sh"}
> --
> 2.50.0
>
>
Hi,
This patch, or a variant thereof has been posted before.
As you said in the downsides section, this breaks in some cases.
I think the downsides outweight the upsides.
--
Kind regards,
Hiltjo
Received on Sun Jul 06 2025 - 12:13:48 CEST