Sam minus (aka myślnik) nie jest opcją, ale operandem (tzn. Argumentem, który nie jest opcją). Z tego powodu stawianie --przed nim nie ma żadnego efektu. Myślnik jest operandem cd -i nadal operandem w cd -- -. Podobnie jak inne standardowe narzędzia, cdtraktuje operand jak operand, niezależnie od tego, czy jest --przed nim.
cdKomenda przypisuje szczególne znaczenie dla argumentu -. Wszystko inne to katalog, do którego można się przełączyć. cd -- -aprzechodzi do katalogu o nazwie -a, ponieważ -anie jest specjalny jako operand i --zapobiega cdtraktowaniu go jako opcji. To nie działa w -pojedynkę, co nie jest opcją.
Umieszczanie cudzysłowów -nie pomoże, ponieważ i tak ostatecznie przejdzie operand -.
Dlatego jedynym wyjściem jest znalezienie innego sposobu wyrażenia tego samego pomysłu, tj. Innej nazwy dla tego samego katalogu. Na szczęście jest prosty: jeśli dodasz ./przed względną nazwą pliku, nadal oznacza to ten sam plik. ./Robi różnicę, która nie ma znaczenia w naszym przypadku: CDPATHnie jest konsultowany, kiedy rozpoczyna się nazwa katalogu /, ./lub ../. A zatem:
cd ./-
Innym sposobem, ponieważ -jest katalogiem, jest dodanie /po nim. Dodanie /na końcu nazwy pliku gwarantuje, że plik jest traktowany jako katalog (w szczególności polecenie będzie działać na samym katalogu, a nie na dowiązaniu symbolicznym, jeśli plik jest dowiązaniem symbolicznym do katalogu), ale w inny sposób powoduje bez różnicy. A zatem:
cd -- -/
Nawiasem -/mówiąc, pisanie jest sugerowane przez kod zakończenia, ale w bash tak naprawdę działa tylko --przed nim, bash nie ma specjalnego przypadku cd -/(zsh robi).