Un signo menos (también conocido como guión) por sí solo no es una opción, sino un operando (es decir, un argumento que no es una opción). Debido a esto, anteponerlo --
no tiene ningún efecto. El guión es un operando cd -
y sigue siendo un operando cd -- -
. Al igual que otras utilidades estándar, cd
trata un operando como un operando, independientemente de si existe --
antes.
El cd
comando asigna un significado especial al operando -
. Cualquier otra cosa es un directorio para cambiar. cd -- -a
cambia al directorio llamado -a
, porque -a
no es especial como un operando y --
evita que lo cd
trate como una opción. Esto no funciona -
solo, lo cual no es una opción.
Poner comillas -
no va a ayudar, ya que eso eventualmente pasaría el operando de -
todos modos.
Por lo tanto, su único recurso es encontrar otra forma de expresar la misma idea, es decir, otro nombre para el mismo directorio. Afortunadamente, hay una fácil: si agrega ./
antes de un nombre de archivo relativo, todavía significa el mismo archivo. El ./
hace una diferencia que es irrelevante en nuestro caso: CDPATH
no se consulta cuando el nombre del directorio comienza con /
, ./
o ../
. Así:
cd ./-
Otra forma, dado que -
es un directorio, es agregar un /
después. Agregar un /
al final de un nombre de archivo asegura que el archivo se trate como un directorio (en particular, el comando operará en el directorio en sí y no en el enlace simbólico si el archivo es un enlace simbólico a un directorio), pero de lo contrario ninguna diferencia. Así:
cd -- -/
La escritura -/
es sugerida por el código de finalización, por cierto, pero en bash solo funciona --
antes, bash no tiene un caso especial para cd -/
(zsh sí).