Opuesto a ~ , que se evalúa mediante bash, - es un argumento para cd . Eche un vistazo a las páginas del manual (bueno, para los sistemas actuales, ambos están en man bash , ya que cd es un componente):
cd [-L|[-P [-e]]] [dir]
Change the current directory to dir. [...] An argument of - is equivalent
to $OLDPWD. [...]
Y el párrafo sobre la expansión de la tilde (simplificado al significado más común):
Tilde Expansion
If a word begins with an unquoted tilde character ('~'), [...] the tilde-prefix
is replaced with the home directory associated with the specified login name.
~ será reemplazado por bash antes de pasar el argumento al comando real. Por lo tanto, escapar de alguna manera (por ejemplo, utilizando '~' o \~ ) funcionará. - por otra parte se pasará al comando. El escape no tiene ningún uso: bash no lo evaluará de todos modos, pero se pasará como una cadena única a cd , que posteriormente abrirá $OLDPWD .
Una alternativa más esotérica a la forma más razonable de Patrix de abrir las carpetas - sería establecer $OLDPATH en - :
OLDPATH=- cd -