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