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 -