tank ~ # time emerge --sync
* Using keys from /usr/share/openpgp-keys/gentoo-release.asc
emerge --sync 3.18s user 5.15s system 67% cpu 12.324 total
https://wiki.gentoo.org/wiki/Portage_with_GitMost bashisms are very old and they come from ksh. Bash has added very few features beyond what was already quasi-standard in UNIX shells.
POSIX has standardized a shell variant that had already been obsolete for a long time.
The scripts that use the additional facilities added by ksh and also a few added by zsh, which now are all available in bash, can be written in a way that makes them more concise, more clear and less prone to bugs.
I believe that bash must be considered the standard for shell scripts, not the POSIX shell, which has been obsolete for more than 3 decades, i.e. since long before the existence of the POSIX standard.
When using a POSIX shell, there are many unavoidable things that can be performed only by invoking external command line utilities, instead of using intrinsic shell features. This not only can make the script much slower, but it adds extra software package dependencies, instead of avoiding such dependencies, which is the declared purpose of using a POSIX shell.
Making your shell script dependent on the existence of bash is less risky than making it dependent on the existence of awk, which may be forced when using a POSIX shell. (The existence of awk is mandated by POSIX, but there are plenty of Linux systems that do not have installed all the POSIX utilities, but they have bash.)
It is true that bash is ubiquitous only on Linux, while on *BSD it is optional. I have used FreeBSD and other *BSD systems for as many decades as I have used Linux. My first action when installing a *BSD system, after the base system is installed, has always been to install bash. I believe that whoever does not do this is mistaken and they should not demand to receive scripts that can be run without having installed one of the bash, ksh or zsh shells.
How are you ever going to get test coverage over the massive number of possible system states and configurations? Are you going to compile every package in portage on every architecture it supports?
I don't really care about it being a replacement overall. I just want my own emerge command to be faster. I can't believe it's not instant like it should be.
That's a difference without distinction. Portage does patch packages. So it involves itself directly in the compilation cycle.
> it runs are deterministic
Well, I don't think so, but good luck to you anyways.