No meu diretório pessoal ~
, eu emiti
ln -s Subfolder1/Subfolder2/Subfolder3
Em seguida, tenho uma pasta com link flexível Subfolder3
no meu diretório pessoal. Quando eu entro pushd
nele, ambos pwd
e dirs
mostram meu diretório de trabalho atual ( cwd ) como . Meu prompt do bash também contém o cwd , que é exibido como ./home/My.User.Name/Subfolder3
~/Subfolder3
Lembro que muitos anos atrás, depois de um cd
ou pushd
em uma pasta simbolicamente vinculada, o caminho completo ~/Subfolder1/Subfolder2/Subfolder3
seria mostrado por pwd
, dirs
e no prompt do bash. É uma configuração simples para recuperar esse comportamento?
A documentação (
man bash
, procure por simbólico ) mostra que você pode lidar com isso cada vez que usarcd
epushd
, ou definindo uma opção globalEsta opção global muda
bash
para usar caminhos reais em todos os lugaresPara desreferenciamento único, há também o
realpath
utilitário recomendado:Ter seus diretórios automaticamente
realpath
-ed é geralmente uma opção de shell; em zsh éCHASE_LINKS
.Não é o padrão porque confunde muito coisas como recursão de diretório e
..
semântica. (De maneiras que acredito podem até ser consideradas vulnerabilidades de segurança.)Você deve considerar cuidadosamente se é realmente a melhor configuração para suas sessões interativas. (Na minha experiência, parece que é... até você tentar.)
Como alternativa à resposta do FeRD , para desreferenciação única do diretório de trabalho atual, você pode usar
pwd -P
. Infelizmente não serve paradirs
.Para uma solução de longo prazo, você pode definir uma função shell:
(Coloque isso em seu
.bashrc
arquivo.) Isso fará com que acd
função execute ocd
comando interno e, se for bem-sucedido, obtenha o nome do caminho absoluto ecd
para isso. Isso fará com$PWD
que seja definido para esse caminho e fará com que ele seja mostrado no prompt do shell.Em raras condições, o segundo
command cd
pode falhar. Nesse caso, você ainda deve estar no diretório em que pretendecd
entrar, mas ainda verá o nome do link simbólico (e acd
função pode mostrar uma mensagem de erro, mesmo se o (primeiro) for bem-cd
sucedido). É concebível que o segundocd
possa tirá-lo do diretório em que você deseja estar, mas não consigo pensar em um cenário em que isso possa acontecer.