Bash alias -=... (alias name should be a simple dash) not working

I want to create an alias for cd - which should be just a dash (-). I tried without success:

alias -='cd -'     # bash: alias: -=: Invalid option
alias \-='cd -'    # bash: alias: -=: Invalid option
alias '-'='cd -'   # bash: alias: -=: Invalid option
alias '\-'='cd -'  # bash: alias: `\-': Invalid alias name.

The former three are the same (only different input, but bash turns all of them into the same command alias with a single argument -=cd -), so it's no surprise the error message is the same. I'd guess that if the argument starts with a dash, it's parsed as a flag rather than the alias name.

Is it even possible to use - as an alias name?


Solution 1:

With most commands, you can pass -- as an argument, and all subsequent arguments are treated as operands and not options, even if they begin with a dash. The alias builtin in bash recognizes --.

alias -- -='cd -'