On 08/24/2017 08:49 PM, L A Walsh wrote: > > However, in testing posix and non-posix modes in bash 4.4.12, I don't > see aliases being enabled in scripts.
That's what happens when you run your script in bash mode, rather than POSIX mode. > > To be POSIX conformant, wouldn't they have to be on? Only if you are running bash in POSIX mode to begin with. If you are running in bash mode, then it is assumed that you will explicitly enable alias expansion in your script, because you (should) know that bash's defaults differ from the POSIX rules. (And why does bash disable aliases by default? Because it helps remind people that shell functions are better than aliases) > > Why do some people say aliases shouldn't be used, when they are > POSIX required for compatibility? They exist solely for back-compat (for the same reason that 'set -e' exists), and have very non-intuitive behavior on when they take effect (for example, wrapping your entire script in {} can effectively bypass any aliases attempted within your script - because aliases are expanded at parse time rather than execution time but you have to parse to the closing }). In almost every respect, shell functions are better and more powerful than aliases. And the few hacks where aliases can be used to do things that shell functions cannot do, like temporarily disabling globbing so that you can write 'find raw*glob' instead of 'find "quoted*glob"', are so gross that I can only point you to the web page discussing how gross they are: https://www.chiark.greenend.org.uk/~sgtatham/aliases.html -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature