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 -