There is a post on stackoverflow:
http://stackoverflow.com/questions/43117707/bashs-strange-behavior-on-a-function-named/
The *problem*:
bash-4.4# shopt -s extglob
bash-4.4# function @() { echo foo; }
bash-4.4# @()
foo
bash-4.4# declare -f
@() ()
{
echo foo
}
bash-4.4#
bash-4.4# unset -f '@()'
bash-4.4#
bash-4.4# shopt -s nullglob
bash-4.4# function @() { echo foo; }
bash-4.4# @()
bash-4.4# declare -f
@() ()
{
echo foo
}
bash-4.4#
So when extglob is on, @() is handled as a glob pattern which makes sense.
But the behavior after shopt -s nullglob indicates that the glob pattern @()
is not *filename-expand*ed for function @(). This looks kind of
counter-intuitive to me.
Bug or feature?
-clark