On Thu, Jun 26, 2025 at 12:01:42PM +0100, Harald van Dijk wrote:
> On 25/06/2025 23:00, Nadav Tasher wrote:
> > On Wed, Jun 25, 2025 at 11:54:56AM +0200, Csókás Bence wrote:
> > > Okay, I understand it for system(), but for the execv() one, the only 
> > > reason
> > > for a developer to write that one is when they _explicitly_ want to honor
> > > the user's shell preference. Which now we disregard completely.
> > > 
> > Actually, I'm not sure about that.
> > In the entire BusyBox codebase, the only times a shell is executed using
> > get_shell_name(), is when system() is insufficient (like when you need to 
> > capture
> > the output or pipe the shell to another process).
> 
> That is not right.
> 
> get_shell_name() is used in:
> 
> - tar --to-command
> - openvt when no command is specified
> - chroot when no command is specified
> - adduser as the default shell for new users
> - conspy
> - crond
> - ifupdown
> - svlogd
> - flock
> - script
> 
> Of those, the *only* one where it is assumed to be sh-like is ifupdown. In
> all other instances, busybox does not pass any commands beyond what is
> specified by the user, where it seems reasonable to run that in whatever
> shell the user wants, whether that be sh-like or not.
> 
> I get what you're going for but I think this is the wrong way of doing it.
> get_shell_name() uses, in order of preference, the SHELL environment
> variable, the shell specified in /etc/passwd, DEFAULT_SHELL. With your new
> config option, DEFAULT_SHELL could be "sh" (or maybe "-sh" to continue to
> act as a login shell), but it does not look right that the other two would
> be ignored. If the user requests a different shell, let the user get that
> different shell.
> 
> Cheers,
> Harald van Dijk

IMO, the odds of get_shell_name() returning a non-sh-like shell are slim.
I think that if someone uses BusyBox with this feature, it's already very
clear to them that there were multiple monkey-patches involved to get it
working.

I think this should be left as-is, but I understand your concern about this
being non-POSIX / off-standard in a way.

I could make this behaviour configurable using a new Kconfig option.
I'll make it very clear that this is experimental, and that it probably
breaks some conventions.

WDYT?

Nadav

_______________________________________________
busybox mailing list
busybox@busybox.net
https://lists.busybox.net/mailman/listinfo/busybox

Reply via email to