Quando eu faço cd
um link, meu caminho atual é prefixado com o caminho do link, em vez do caminho do diretório ao qual o link está vinculado. Por exemplo
~/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$
Gostaria que meu caminho atual fosse alterado para o caminho do diretório vinculado, para que eu também possa trabalhar com os diretórios pai do diretório vinculado. Além ls
do link para descobrir o diretório vinculado e, cd
em seguida, para ele, quais são algumas maneiras mais simples de fazer isso? Por exemplo, depois de cd
um link, como você altera seu caminho atual para o caminho do diretório vinculado?
fonte
cd -P .
após o originalcd
.Você pode usar
readlink
para determinar onde o seu link aponta e fornecer essa saída como o destino do seucd
.No caso de links simbólicos adicionais apontando para links simbólicos,
readlink
simplesmente fornecerá o destino, a menos que você especifique uma de suas opções para seguir links simbólicos para um destino de arquivo canônico, por exemploreadlink -f <link>
.fonte
Os shell do tipo Korn acompanham os links simbólicos no caminho para o diretório atual (conhecido como rastreamento lógico do diretório atual). Se você deseja expandir todos os links simbólicos, passe a opção
-P
para ocd
builtin (para rastreamento físico de diretório atual):Se você estiver em um diretório ao qual acessou por meio de um link simbólico e quiser mudar o diretório atual rastreado para o caminho com os links simbólicos expandidos, execute
Se você deseja imprimir o caminho para o diretório atual com links simbólicos expandidos, execute
pwd -P
. No bash, se você deseja desativar o rastreamento lógico, executeset -P
; no zsh, executeset -w
ousetopt chase_links
.fonte