On Fri, Sep 26, 2014 at 6:06 PM, Mailing Lists email@example.com wrote:
i just ran the "checkbashisms" script from the AUR on my /usr/bin using the command from the wiki:
# checkbashisms -f -p $(grep -rlE '^#! ?/bin/(env )?sh' /usr/bin)
which revealed 470 instances of putative bashisms in scripts using #!/bin/sh.
The grep would find some false positives -- e.g., some perl script might include #!/bin/sh in its body (such as findimagedupes).
With dash you don't really need -p, which is more strict.
The following will reduce the count drastically:
#!/bin/sh for f in /usr/bin/*; do test -f "$f" || continue sed -nr ' /^#!/!d @^#![[:space:]]*/bin/(env[[:space:]]+)?sh>@q1 q ' "$f" || checkbashisms -f "$f" done
This finds 259 instances for me, of which 208 instances are from a *single* script /usr/bin/libtool -- which apparently really relies on bash.
Among The other instances of bashism, many are false positives (if we had removed -f from the checkbashisms command line, some could have been detected), but some are real, such as /usr/bin/bzgrep and /usr/bin/xbmc, but they're mostly an easy fix for upstream.
Assuming that these bashisms all come from upstream, patching and maintaining them would be a chore.
From my inspection above, bashism is really not that wide spread.