Subject: Re: bug#75308: 30.0.93; man.el assume shell is bash

From: Ted Phelps <[email-masked]>
Date: Sat, 4 Jan 2025 18:12:02 +1100

On 3/1/25 22:47, Eli Zaretskii wrote:
>> From: Stefan Kangas <[email-masked]>
>> Date: Fri, 3 Jan 2025 03:26:42 -0600
>> Cc: [email-masked], [email-masked], [email-masked]
>>
>> Eli Zaretskii <[email-masked]> writes:
>>
>>>> Cc: Michael Albinus <[email-masked]>
>>>> From: Stefan Kangas <[email-masked]>
>>>> Date: Fri, 3 Jan 2025 02:46:28 -0600
>>>>
>>>> Ted Phelps <[email-masked]> writes:
>>>>
>>>>> Steps to reproduce:
>>>>> * env SHELL=/bin/tcsh emacs -Q
>>>>> * invoke M-x man
>>>>> * request a man page (e.g. emacs)
>>>>>
>>>>> This will produce output like the following instead of the man page:
>>>>>
>>>>>      Unmatched '''.
>>>>>      BEGIN: Command not found.
>>>>>      anonblank=0: Command not found.
>>>>>      }: Command not found.
>>>>>      Illegal variable name.
>>>>>      {: Command not found.
>>>>>      }: Command not found.
>>>>>      Illegal variable name.
>>>>>      Badly placed ()'s.
>>>>>      Unmatched '''.
>>>>>
>>>>>      process exited abnormally with code 1
>>>>>
>>>>> Replacing /bin/tcsh with /bin/bash in the above command produces the
>>>>> expected man page.
>>>>>
>>>>> It looks like the behavior was broken by the following commit:
>>>>>
>>>>>      commit 861ac933dd8aed1028edc4b9142400e3702874d5
>>>>>      Author: Michael Albinus <[email-masked]>
>>>>>      Date:   Wed Nov 1 16:54:31 2023 +0100
>>>>>
>>>>> Many thanks,
>>>>> -Ted
>>>>
>>>> Thanks for the bug report.  For emacs-30, we should look into a some
>>>> small workaround.  I'm copying in Michae.
>>>
>>> I think we should force SHELL to be 'sh' (except on Windows) before
>>> calling shell-command etc.
>>
>> I was first thinking /bin/bash but if we don't expect to need it, then
>> sh is better.
> 
> If we do need Bash and not just Bourne-compatible shell, we have a
> serious bug there.  I hope that is not the case.

I don't think there's anything bash-specific required, just the ability 
to redirect stdout and stderr independently.  I've confirmed that 
Debian's /bin/sh (dash) works just fine.

-Ted