Di fronte a ~ , che viene valutato da bash, - è un argomento a cd . Dai un'occhiata alle pagine man (beh, per i sistemi attuali entrambi sono in man bash come cd è un builtin):
cd [-L|[-P [-e]]] [dir]
Change the current directory to dir. [...] An argument of - is equivalent
to $OLDPWD. [...]
E il paragrafo sull'espansione tilde (semplificato al significato più comune):
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.
~ verrà sostituito da bash prima di passare l'argomento al comando effettivo. Pertanto, l'escape in qualche modo (ad esempio utilizzando '~' o \~ ) funzionerà. - d'altra parte sarà passato al comando. L'escaping non ha senso: bash non lo valuterà comunque, ma verrà passato senza escape come stringa singola a cd , che aprirà successivamente $OLDPWD .
Un'alternativa più esoterica a Patrix "modo più ragionevole per aprire - -folders sarebbe impostare $OLDPATH su - :
OLDPATH=- cd -