On 22 August 2017 at 12:45, Eliot Moss <m...@cs.umass.edu> wrote: > On 8/22/2017 11:18 AM, Stephen John Smoogen wrote: >> >> On 22 August 2017 at 10:47, Eliot Moss <m...@cs.umass.edu> wrote: >>> >>> On 8/22/2017 10:31 AM, Stephen John Smoogen wrote: > > >>> It's a *bash* default - it has nothing to do with Cygwin as distinct >>> from other bash installations. If you had a different experience >>> elsewhere, it could be that the default was overridden in some system >>> wide bashrc file - but that strikes me as unlikely. I suspect that >>> this is done as a security measure, to prevent an alias from introducing >>> a surprise. >>> >> >> I checked on CentOS and there is no shopt option set in any of the >> /etc/ files. It must be a compiled in default of some sort as EL6 and >> EL7 both work without an explicit `shopt -s expand_aliases`. I then >> tried on an Ubuntu 16.04 system and it works without the `shopt -s >> expand_aliases` also. >> >> I didn't have access to anything else at the moment so I can't say >> which other systems might actually follow the default other than >> Cygwin at the moment. > > > Hmmm ... One of my servers runs EL7 and it works there exactly as under > Cygwin on my laptop. I wonder: Is there an nawk installed somewhere > on your path on these CentOS and EL* systems? Put another way, if you > put 'type -a nawk' in your script *before* the alias lines, what output > do you get? And what about shopt? I added these lines before the alias > lines: > > shopt | grep expand_aliases > type -a nawk > type -t nawk > > Regards - Eliot > > > -- > Problem reports: http://cygwin.com/problems.html > FAQ: http://cygwin.com/faq/ > Documentation: http://cygwin.com/docs.html > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple >
OK I figured it out. I didn't copy the original script correctly. [ssmoogen@el-7 ~]$ ./x.sh foobar Before alias expand_aliases on ./x.sh: line 4: type: nawk: not found After alias expand_aliases on nawk is aliased to `/usr/bin/awk' alias Hello World! [ssmoogen@el-7 ~]$ cat x.sh #!/bin/sh echo "Before alias" shopt | grep expand_aliases type -a nawk type -t nawk alias nawk='/usr/bin/awk' echo "After alias" shopt | grep expand_aliases type -a nawk type -t nawk nawk '{print $0}' $* Change that #!/bin/sh to #!/bin/bash [ssmoogen@el-7 ~]$ ./x.sh foobar Before alias expand_aliases off ./x.sh: line 4: type: nawk: not found After alias expand_aliases off ./x.sh: line 9: type: nawk: not found ./x.sh: line 11: nawk: command not found So when you use bourne sh compatibility aliases get expanded. When you don't.. they do as the reporter says. -- Stephen J Smoogen. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple