Il modo più semplice per collegarsi alla directory corrente come percorso assoluto, senza digitare l'intera stringa del percorso sarebbe
ln -s "$(pwd)/foo" ~/bin/foo_link
Il target
(primo) argomento per il ln -s
comando funziona in relazione alla posizione del collegamento simbolico, non alla directory corrente. Aiuta a sapere che, in sostanza, il collegamento simbolico creato (il secondo argomento) contiene semplicemente il testo fornito per il primo argomento.
Pertanto, se si esegue quanto segue:
cd some_directory
ln -s foo foo_link
e quindi spostare quel collegamento
mv foo_link ../some_other_directory
ls -l ../some_other_directory
vedrai che foo_link
cerca di puntare foo
nella directory in cui risiede. Funziona anche con collegamenti simbolici che puntano a percorsi relativi. Se esegui le seguenti operazioni:
ln -s ../foo yet_another_link
e poi passa yet_another_link
a un'altra directory e controlla dove punta, vedrai che punta sempre a ../foo
. Questo è il comportamento previsto, poiché molte volte i collegamenti simbolici potrebbero far parte di una struttura di directory che può risiedere in vari percorsi assoluti.
Nel tuo caso, quando crei il link digitando
ln -s foo ~/bin/foo_link
foo_link
contiene solo un link foo
, relativo alla sua posizione. Mettere $(pwd)
davanti al nome dell'argomento target aggiunge semplicemente il percorso assoluto della directory di lavoro corrente, in modo che il collegamento venga creato con un target assoluto.