Le moyen le plus simple de créer un lien vers le répertoire en cours en tant que chemin absolu, sans taper la chaîne de chemin entière, serait
ln -s "$(pwd)/foo" ~/bin/foo_link
Le target
(premier) argument de la ln -s
commande fonctionne par rapport à l'emplacement du lien symbolique, et non à votre répertoire actuel. Il est utile de savoir que, essentiellement, le lien symbolique créé (le deuxième argument) contient simplement le texte que vous fournissez pour le premier argument.
Par conséquent, si vous procédez comme suit:
cd some_directory
ln -s foo foo_link
puis déplacer ce lien
mv foo_link ../some_other_directory
ls -l ../some_other_directory
vous verrez que foo_link
tente de pointer vers foo
le répertoire dans lequel il réside. Cela fonctionne également avec les liens symboliques pointant vers des chemins relatifs. Si vous procédez comme suit:
ln -s ../foo yet_another_link
puis déplacez-vous yet_another_link
vers un autre répertoire et vérifiez où il pointe, vous verrez qu'il pointe toujours vers ../foo
. Il s'agit du comportement souhaité, car de nombreux liens symboliques peuvent faire partie d'une structure de répertoires pouvant résider dans différents chemins absolus.
Dans votre cas, lorsque vous créez le lien en tapant
ln -s foo ~/bin/foo_link
foo_link
détient juste un lien vers foo
, par rapport à son emplacement. Le fait de placer $(pwd)
devant le nom de l'argument cible ajoute simplement le chemin absolu du répertoire de travail actuel, de sorte que le lien est créé avec une cible absolue.