Я заглянул в источник Bash, и комментарий @ chepner верный. Любые символы, которые не интерпретируются оболочкой, уже действительны. Поэтому такие вещи, как $
, /
и =
не допускаются.
От общего. c, https://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz
/* Return 1 if STRING comprises a valid alias name. The shell accepts
essentially all characters except those which must be quoted to the
parser (which disqualifies them from alias expansion anyway) and `/'. */
int
legal_alias_name (string, flags)
const char *string;
int flags;
{
register const char *s;
for (s = string; *s; s++)
if (shellbreak (*s) || shellxquote (*s) || shellexp (*s) || (*s == '/'))
return 0;
return 1;
}