core.bash redefines eval, which is a) unexpected and b) not its business (and it can be trivially circumvented so it is not effective). If at all, such things belong into a style guide.
Created attachment 155135 [details, diff] Patch for eselect trunk Trivial patch to fix this.
That was intentional. You can get eval back easily enough if you really need it, but you have to explicitly state that you know enough about bash to do so.
> That was intentional. Of course. > You can get eval back easily enough if you really need it, but you have to > explicitly state that you know enough about bash to do so. It is bad style if an application needlessly redefines standard functions of the underlying language. As said above, put it into a style guide in blinking red letters. But please leave the bash builtin functions alone.
eselect modules aren't bash. They're a domain specific language consisting of a large subset of bash plus various extras.
This behaviour has the price that, you can't simply source /etc/init.d/functions.sh, which would be the proper way to deal with all rc stuff: see the blocker. Or should we ask openrc maintainers to change the eval statement?
(In reply to comment #5) > Or should we ask openrc maintainers to change the eval statement? Not sure if that would be possible. OpenRC uses POSIX shell syntax only, and there are (for example) no arrays and no variable indirection. So "eval" comes in handy more often than with bash.
(In reply to comment #2) > You can get eval back easily enough if you really need it, but you have to > explicitly state that you know enough about bash to do so. I'm still not entirely convinced by this argument, but the example of bug 180966 shows that we can indeed live with things as they are. Closing this bug for now.
This was fixed some time ago, in eselect-1.2.5.
commit 1b4e2608f7463d98270c0b709cffe09d1b5d2d86 Author: Ulrich Müller <ulm@gentoo.org> Date: Mon Oct 31 09:30:55 2016 +0100 Disable eval again. * libs/core.bash.in (eval): Disable eval again, because the workaround for the rc module (sourcing functions.sh) is no longer needed. See also 2005-05-15 change by ciaranm. This partially reverts commit 76867bf1a47570cd9548100caed519252b5ced5a.