
Dear Rasmus,
In message b8e3d765-d0a6-12da-5fc9-3e0da0818cb8@prevas.dk you wrote:
Yes, current versions of busybox hush do implement shell functions; tested under Fedora 32:
Not what I meant, of course busybox hush does that. What I meant is that it is not at all obvious how that support would actually benefit U-Boot.
um... I think you should define what you want. You asked for shell functions; I tell you they are supported; now you ask for something else....
The problem is how one would go about getting the functions defined. Putting
define_func='func() { do_stuff $1 $2; do_more_stuff $3; }'
in the environment and then having to say
run define_func; func foo ...
does not really look like an improvement to me. In contrast, the current
Shell functions is something you usually use as part of longer scripts. You can either define these as part of one or more envrionment variables, or you can put these into a file or a U-Boot image etc. and source it when needed. There are many ways.
way of defining "one-liner" functions and running with, well, run, is quite ergonomic - but I do miss the ability to provide parameters other than via global settings. With these patches, the above would just be
func='do_stuff $1 $2; do_more_stuff $3;'
run func -- foo ...
I can't see why you cannot do the same with shell fnctions?
setenv define_func 'func() { do_stuff $1 $2; do_more_stuff $3; }' ... run define_func func foo ...
I guess one could have something like CONFIG_DOT_PROFILE and have that point at a script that gets built into the U-Boot binary and sourced at shell startup; then one could put one's functions in there, or have the flexibility of having that file load some stdlib.sh from somewhere.
You don't need any new defines for such a thing. You can define something like a sequence "test if file .profile exisits in some stroage device; if yes, then source it" as past of your CONFIG_USE_PREBOOT settings.
I agree in principle - there are other shell features I'm also missing (though see above, I don't immediately see how an upgrade would make functions available in a useful way).
So do you want shell functions or any other standard shell features, or do you just want to implement your own nonstandard ideas? The former I do support, the latter I don't...
Someone speaking up and saying "I'm going to look at an overhaul of hush within the next year or so" would clearly be a strong argument against inclusion of these patches. Lacking such a pony promise, this really boils down to an idealist/pragmatist issue, and we can keep going around this in circles forever, so I think someone (Tom?) should make a decision.
As mentioned - addin more non-standard stuff will just create new compatibility problems and make an upgrade more difficult and thus less likely.
Best regards,
Wolfgang Denk