considere o seguinte:
x/
ph/
file1.txt -> ./../file1.txt
file1.txt
y/
ph/ -> /x/ph/ (this is full absolute path of x/ph)
file1.txt
/y/ph
é um link simbólico para a pasta ph
em x
. e file1.txt
é um link simbólico relativo.
funciona corretamente na pasta x
, no entanto, se você abrir
/y/ph/file1.txt
em vez de abrir /y/file1.txt
abre /x/file1.txt
o objetivo aqui é ter o mesmo diretório (digamos, um programa) em vários lugares com diferentes arquivos de configuração, sem ter que ter várias cópias do programa.
de acordo com a ajuda de ln
Links simbólicos podem conter texto arbitrário; se mais tarde for resolvido, um link relativo é interpretado em relação ao seu diretório pai.
links tão relativos são relativos ao caminho da pasta real e não ao diretório de trabalho atual. a questão é: há alguma solução alternativa para isso?
caso de teste:
mkdir x y x/ph
echo x1 > ./x/file1.txt
echo y1 > ./y/file1.txt
ln -s $(pwd)/x/ph ./y/ph
cd ./x/ph
ln -s ./../file1.txt
cd ../..
cat ./x/ph/file1.txt
cat ./y/ph/file1.txt
o resultado esperado é x1 y1
, mas você recebe x1 x1
Editar:
para tornar a questão mais clara, execute o caso de teste em uma pasta vazia.
e tente os seguintes comandos na pasta:
bor@borpc:~/tmp$ readlink -f ./x/ph/file.txt
/home/bor/tmp/x/ph/file.txt
bor@borpc:~/tmp$ readlink -f ./y/ph/file.txt
/home/bor/tmp/x/ph/file.txt
--------------^
Eu quero que x
tenha y
. isto é, fazer com que o link simbólico relativo seja resolvido com base no pwd
(diretório de trabalho atual ou caminho usado para acessá-lo) em vez do caminho real do arquivo real.
se for possível como alguém alcançaria esse comportamento.