/./
você deve sempre ser capaz de recolher para /
.
//
geralmente deve ser colapsável, MAS eu vi os scripts de configuração verificarem, então eu suponho que pode haver sistemas onde não é o mesmo. Verifique, mas provavelmente ficará bem.
/../
só funcionará se o diretório anterior não for um symlink (ou, acredito, um hardlink). Como ..
é um hardlink para seu diretório pai, ele vai até aquele branch, não aquele no caminho textual que você usa. (NB Seu shell pode ser configurado para não resolver links simbólicos em cd
s, nesse caso ele irá para o diretório onde o link simbólico está; entretanto, este comportamento é quase inteiramente limitado a cd
dentro de shells com este conjunto de opções.)
Use readlink -f "$path"
, acredito que isso resolverá todos os casos corretamente.