4 ms·
Lets imagine for a moment that cross-platform backwards compatibility is a high priority, and that every change leads to a frustrated group of users running scr
by veyron 15y ago
Lets imagine for a moment that cross-platform backwards compatibility is a high priority, and that every change leads to a frustrated group of users running scripts from many years ago. How could you make a destructive change?
As an example, this works in bash 3.2 but not 4.0:
diff <(awk '{print $1, $3}' file{1,2})
in 3 it expands to
diff <(awk '{print $1, $3}' file1) <(awk '{print $1, $3}' file2)
whereas in 4 it expands to
diff <(awk '{print $1, $3}' file1 file2)
- moe 15y agoHow could you make a destructive change? Well, the same way that everyone else does it: by versioning. The simplest approach would be to have /bin/bash2, /bin/bash3 etc., with /bin/bash defaulting to the last (current) unversioned bash release. Then when you write a script that depends on a new feature you'd reference #!/bin/bash3 or whatever. More complex schemes are possible but probably not needed here. It's not rocket science. And as your example illustrates: This kind of versioning is actually needed even in the current (almost stale) development-mode of bash. Its absence is the reason why many people still target sh as the lowest common denominator...
- veyron 15y agoAfter some thought, what i'd like to see is what's done now with globstar (make new features accessible via shopt)