Мінус (він же тире) не є опцією, а операндом (тобто аргументом, який не є варіантом). Через це ставлення --перед цим не дає ефекту. Дефіс - це операнд у cd -та досі операнд у cd -- -. Як і інші стандартні утиліти, cdтрактує операнда як операнда незалежно від того, чи є --він перед ним.
cdКоманда привласнює спеціальне значення операнда -. Все інше - це каталог, на який потрібно перейти. cd -- -aперемикається на каталог, який називається -a, тому що -aвін не є особливим як операнд і --перешкоджає cdтрактувати його як варіант. Це не працює -самотужки, що не є варіантом.
Розміщення лапок -не допоможе, оскільки це врешті-решт передасть операнду -.
Отже, ваш єдиний звернення - знайти інший спосіб висловити ту саму ідею, тобто інше ім’я для тієї ж директорії. На щастя, є простий: якщо ви додасте ./до відносного імені файлу, він все одно означає той самий файл. ./Робить різницю , яка не має відношення в нашому випадку: CDPATHне радився , коли ім'я каталогу починається з /, ./або ../. Таким чином:
cd ./-
Ще один спосіб, оскільки -це каталог, - це додавання /після нього. Додавання в /кінці імені файлу гарантує, що файл розглядається як каталог (зокрема, команда буде працювати над самим каталогом, а не з символьним посиланням, якщо файл є символічним посиланням на каталог), але в іншому випадку робить без різниці. Таким чином:
cd -- -/
Написання -/запропоновано кодом завершення, до речі, але в bash він фактично працює лише --перед цим, bash не має спеціального випадку для cd -/(zsh does).