ПРИМЕЧАНИЕ. Такое поведение наблюдается через удаленный доступ с использованием SSH.

Я заметил, что если я перешел в каталог с помощью символической ссылки, я не могу использовать запись .. в списке каталогов, чтобы вернуться обратно в родительский каталог, а затем в последующие каталоги. Например:

/DirA/SymLinkToDirB
/DirA/SomeOtherFile.txt
/DirA/DirB
/DriA/DirC

/DirA/DirB/someFile.txt

Если бы я был в данный момент в DirA и выполнил следующую команду: cd SymLinkToDirB то последующий pwd разрешит /DirA/DirB , как и ожидалось. Тем не менее, следующее не будет работать, если я в настоящее время был в DirB через symLink.

vim ../SomeOtherFile.txt или даже cd ../DirC

Кроме того, нажатие на tab при использовании cd обычно перечисляет каталоги, к которым может перейти пользователь. Однако, опять же, такое поведение, которое каждый ожидает и наблюдает на локальной машине, также не работает по SSH.

Однако, следующие работает , если мы уже в DirB одержавший туда через линк: cd ../SymLinkToDirB/ , что является довольно бесполезным действием. Кажется, что символическая ссылка находится в каталоге (его родительском) все свое собственное.

Несомненно, это связано с тем, как символические ссылки обрабатываются в SSH. Каков механизм, посредством которого символические ссылки обрабатываются через SSH, который обеспечивает такое поведение?

1 ответ1

0

Команда cd пытается быть умной и особенно помнить, как вы попали в каталог, в котором вы находитесь в данный момент, и предполагает, что вы хотите следовать по тому же пути снова.

Однако, как только вы окажетесь в каталоге, другие команды (например, vim) увидят существующий каталог .. и проследят за ним через настоящую файловую систему.

Что я буду делать иногда это cd symlinktoDirB/../DirB/.. Использование дополнительного набора .. s заставит cd увидеть реальный путь к файловой системе и следовать по нему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .