Emanuele Torre <torreemanue...@gmail.com> writes: > bash-5.1$ a[0] () { echo;} > bash-5.1$ unset 'a[0]'
Admittedly, I'm running Bash 5.1.0, but the manual page says: fname () compound-command [redirection] function fname [()] compound-command [redirection] ...in posix mode, fname must be a valid shell name and may not be the name of one of the POSIX special builtins. In default mode, a function name can be any unquoted shell word that does not contain $. ... So it does seem that a function named "a[0]" is valid in default mode. (And as long as there is no file named "a0" and nullglob is not enabled (the default), you don't have to quote the name to have it be the word that is the argument of the command. So "unquoted" is true.) unset [-fv] [-n] [name ...] ... If no options are supplied, each name refers to a variable; if there is no variâ able by that name, a function with that name, if any, is unset. So taking that text strictly, "unset a[0]" should attempt to remove the variable a[0], and if it does not exist, attempt to remove the function a[0] that name. Whether that change would make Bash more useful is debatable. It's possible that changing the documentation to match the code would be more useful. Dale