Почему может колотить CD//?

В ударе, если Вы CD к//Ваш pwd будете//, но если Вы CD к / или///+ Ваш pwd будете/. Существует ли причина этого, или это - просто странная ошибка?

Я попробовал это в osx и человечности.

7
задан 22.06.2010, 09:07

2 ответа

От Bash FAQ:

E10), Почему делает 'CD//', оставляют $PWD как '//'?

POSIX.2, в его описании 'CD', говорит, что три или больше ведущих наклонных черты могут быть заменены единственной наклонной чертой при канонизации текущего рабочего каталога.

Это, я предполагаю для исторической совместимости. Определенные версии Unix, и ранние сетевые файловые системы, используемые пути формы//имя хоста/путь для доступа к 'пути' на сервере 'имя хоста'.

8
ответ дан 07.12.2019, 14:57

Хотя ответ был корректен на данных, это дало, это не вполне отвечало на вопрос, который задают.

Оболочка нормализует путь. Это делает:

  • измените любой part1/part2/.. компоненты к part1/
  • измените любого//+ компоненты к /

Можно проверить это с strace, который будет видеть то, что на самом деле передается в syscall

strace -o /tmp/strace.out bash -c "cd ///tmp"
grep chdir /tmp/strace.out
# will give chdir("/tmp")

strace -o /tmp/strace.out bash -c "cd ///tmp/../etc"
grep chdir /tmp/strace.out
# will give chdir("/etc")

Оболочка делает нормализацию пути, прежде чем она даже скажет системе изменять dir

0
ответ дан 07.12.2019, 14:57

Теги

Похожие вопросы