A maneira mais fácil de se vincular ao diretório atual como um caminho absoluto, sem digitar a string do caminho inteiro, seria
ln -s "$(pwd)/foo" ~/bin/foo_link
O argumento target
(primeiro) para o comando ln -s
funciona em relação à localização do link simbólico, não ao seu diretório atual. Isso ajuda a saber que, essencialmente, o link simbólico criado (o segundo argumento) simplesmente contém o texto que você fornece para o primeiro argumento.
Portanto, se você fizer o seguinte:
cd some_directory
ln -s foo foo_link
e mova esse link em torno de
mv foo_link ../some_other_directory
ls -l ../some_other_directory
você verá que foo_link
tenta apontar para foo
no diretório em que está residindo. Isso também funciona com links simbólicos apontando para caminhos relativos. Se você fizer o seguinte:
ln -s ../foo yet_another_link
e, em seguida, mova yet_another_link
para outro diretório e verifique para onde aponta, você verá que ele sempre aponta para ../foo
. Esse é o comportamento pretendido, pois muitas vezes os links simbólicos podem fazer parte de uma estrutura de diretório que pode residir em vários caminhos absolutos.
No seu caso, quando você cria o link digitando
ln -s foo ~/bin/foo_link
foo_link
apenas contém um link para foo
, relativo à sua localização. Colocar $(pwd)
na frente do nome do argumento de destino simplesmente adiciona o caminho absoluto do diretório de trabalho atual, para que o link seja criado com um destino absoluto.