Cách dễ nhất để liên kết đến thư mục hiện tại là một đường dẫn tuyệt đối, mà không cần nhập toàn bộ chuỗi đường dẫn sẽ là
ln -s "$(pwd)/foo" ~/bin/foo_link
Đối số target
(đầu tiên) cho ln -s
lệnh hoạt động liên quan đến vị trí của liên kết tượng trưng, không phải thư mục hiện tại của bạn. Nó giúp biết rằng, về cơ bản, symlink đã tạo (đối số thứ hai) chỉ đơn giản giữ văn bản bạn cung cấp cho đối số đầu tiên.
Do đó, nếu bạn làm như sau:
cd some_directory
ln -s foo foo_link
và sau đó di chuyển liên kết đó xung quanh
mv foo_link ../some_other_directory
ls -l ../some_other_directory
bạn sẽ thấy rằng foo_link
cố gắng trỏ đến foo
trong thư mục mà nó đang nằm. Điều này cũng hoạt động với các liên kết tượng trưng chỉ đến các đường dẫn tương đối. Nếu bạn làm như sau:
ln -s ../foo yet_another_link
và sau đó di chuyển yet_another_link
đến một thư mục khác và kiểm tra xem nó trỏ đến đâu, bạn sẽ thấy rằng nó luôn luôn trỏ đến ../foo
. Đây là hành vi dự định, vì nhiều lần các liên kết tượng trưng có thể là một phần của cấu trúc thư mục có thể nằm trong các đường dẫn tuyệt đối khác nhau.
Trong trường hợp của bạn, khi bạn tạo liên kết bằng cách gõ
ln -s foo ~/bin/foo_link
foo_link
chỉ cần giữ một liên kết đến foo
, liên quan đến vị trí của nó. Đặt $(pwd)
trước tên của đối số đích chỉ cần thêm đường dẫn tuyệt đối của thư mục làm việc hiện tại, để liên kết được tạo với một mục tiêu tuyệt đối.