Когда я cd
являюсь ссылкой, моему текущему пути предшествует путь ссылки, а не путь к каталогу, на который ссылается ссылка. Например
~/dirlinks/maths$ ls -l logic
lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic
~/dirlinks/maths$ cd logic
~/dirlinks/maths/logic$ pwd
/home/tim/dirlinks/maths/logic
~/dirlinks/maths/logic$ cd ..
~/dirlinks/maths$
Я хотел бы, чтобы мой текущий путь был изменен на путь связанного каталога, чтобы я мог также работать с родительскими каталогами связанного каталога. Помимо ls
ссылки, чтобы узнать связанный каталог, а затем cd
в него, каковы некоторые более простые способы сделать это? Например, после cd
ссылки, как вы меняете текущий путь на путь к связанному каталогу?
cd -P .
после оригиналаcd
.Вы можете использовать,
readlink
чтобы определить, где находится ваша ссылка, и предоставить этот вывод в качестве цели вашейcd
.В случае дополнительных символических ссылок, указывающих на символические ссылки,
readlink
просто укажите цель, если вы не укажете один из ее вариантов, например, следовать символическим ссылкам на канонический файл целиreadlink -f <link>
.источник
Корн-подобные оболочки отслеживают символические ссылки в пути к текущему каталогу (это называется логическим отслеживанием текущего каталога). Если вы хотите , чтобы развернуть все символические ссылки, передать параметр
-P
кcd
встроенной команде (для физического текущего отслеживания каталогов):Если вы находитесь в каталоге, к которому вы получили доступ по символической ссылке и хотите переключить отслеживаемый текущий каталог на путь с расширенными символическими ссылками, запустите
Если вы хотите распечатать путь к текущему каталогу с расширенными символическими ссылками, запустите
pwd -P
. В bash, если вы хотите отключить логическое отслеживание, запуститеset -P
; в зш, бегиset -w
илиsetopt chase_links
.источник