bash-3.2 borkage

02 Nov 2006 • 1 min read

OK, so yet another bash release borks baselayout and friends 😦

But this still probably the nicest release as bash-3.2_p3 mostly works. The big caveat is the =~ semantic has changed. Take this snippet

[[ $(/proc/filesytems)$'\n' =~ " tmpfs"$'\n' ]]

That works fine for bash-3.0 and 3.1 Not so for 3.2! Here's how it's now done

[[ $(/proc/filesytems)$'\n' =~ \ tmpfs$'\n' ]]

Basically, we need to stop using quotes on the RHS when using =~ unless we want to match against the quote exactly. We also need to escape spaces.

As it's totally incompatible for most parts of baselayout, the 1.12 branch has had all the =~ instances removed where it didn't work with either. For the 1.13 branch we've changed to the new semantic and as such, alpha5 will require bash-3.2_p3. If you're using FreeBSD then you'll probably need this little patch for bash too.