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