Contrairement à ~
, qui est évalué par bash, -
est un argument pour cd
. Consultez les pages de manuel (eh bien, pour les systèmes actuels, les deux se trouvent dans man bash
car cd
est intégré) :
cd [-L|[-P [-e]]] [dir]
Change le répertoire courant vers dir. [...] Un argument de - est équivalent
à $OLDPWD. [...]
Et le paragraphe sur l'expansion de tilde (simplifié pour le sens le plus courant) :
Expansion de tilde
Si un mot commence par un caractère de tilde non cité ('~'), [...] le préfixe de tilde
est remplacé par le répertoire personnel associé au nom de connexion spécifié.
~
sera remplacé par bash avant de passer l'argument à la commande réelle. Ainsi, l'échappement de celui-ci d'une manière ou d'une autre (par exemple en utilisant '~'
ou \~
) fonctionnera. En revanche, -
sera passé à la commande. L'échappement est inutile : bash ne l'évaluera de toute façon pas, mais le passera non échappé en tant que chaîne unique à cd
, qui ouvrira ensuite $OLDPWD
.
Une alternative plus ésotérique à la manière plus raisonnable de Patrix d'ouvrir les dossiers -
serait de définir $OLDPATH
sur -
:
OLDPATH=- cd -