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, cdtrata un operando como un operando, independientemente de si existe --antes.
El cdcomando asigna un significado especial al operando -. Cualquier otra cosa es un directorio para cambiar. cd -- -acambia al directorio llamado -a, porque -ano es especial como un operando y --evita que lo cdtrate 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: CDPATHno 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í).