Frente a ~
que es evaluado por bash, -
es un argumento para cd
. Echa un vistazo a las páginas man (bueno, para los sistemas actuales ambas están en man bash
como cd
es un builtin):
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, escapando de alguna manera (por ejemplo usando '~'
o \~
) funcionará. -
por otro lado, se pasará al comando. Escapar no tiene ninguna utilidad: bash no lo evaluará de todos modos, pero se pasará sin esconder como una sola cadena a cd
que posteriormente abrirá $OLDPWD
.
Una alternativa más esotérica a la forma más razonable de abrir Patrix -
-carpetas sería establecer $OLDPATH
a -
:
OLDPATH=- cd -