2.3 Tạo liên kết và xóa tệp tin
15
Nói cụ thể hơn, thư mục /tmp/usr/local/bin trên thực tế không tồn tại. Nhưng vì đường
dẫn là tương đối nên sau khi di chuyển bin2, thay vì chỉ tới /usr/local/bin sẽ chỉ tới thư mục
không tồn tại nói trên. Vì vậy, chúng ta không thể dùng cd để chuyển tới thư mục bin2;
nói cách khác, liên kết bin2 bị vỡ.
Vì lý do này, đôi lúc nên tránh việc tạo liên kết tượng trưng với đường dẫn tương đối.
Tuy nhiên, có nhiều trường hợp liên kết tượng trưng với đường dẫn tương đối lại thuận tiện.
Ví dụ khi bạn muốn tạo tên thứ hai cho một chương trình trong /usr/bin:
# ls -l /usr/bin/unicode_start
-rwxr-xr-x
1 root root 1061 2004-04-22 22:30 /usr/bin/unicode_start
Nếu là người dùng "root"
, bạn có thể tạo một tên tương đương cho "unicode_start", ví
dụ "u_s". Trong ví dụ này, dấu nhắc bash chứa "#" là dấu hiệu của người dùng root. Ở đây
cần quyền root vì người dùng bình thường không thể tạo tệp tin trong /usr/bin/. Việc tạo một
tên tương đương cho unicode_start không có gì phức tạp:
# cd /usr/bin
# ln -s /usr/bin/unicode_start u_s
# ls -l unicode_start
-rwxr-xr-x
1 root root 1061 2004-04-22 22:30 unicode_start
# ls -l u_s
lrwxrwxrwx
1 root root
22 2004-09-02 23:14 u_s -> /usr/bin/unicode_start
Ở đây, đã tạo ra liên kết tượng trưng u_s chỉ tới tệp tin /usr/bin/unicode_start. Hãy thử
gõ u_s bạn sẽ thấy kết quả thu được!
Tuy nhiên, giải pháp này sẽ tạo ra vấn đề nếu chúng ta chuyển cả hai tệp /usr/bin/unicode_start
và /usr/bin/u_s tới một thư mục khác, ví dụ /usr/local/bin:
# mv /usr/bin/unicode_start /usr/bin/u_s /usr/local/bin
# ls -l /usr/local/bin/unicode_start
-rwxr-xr-x
1 root
root 1061 2004-04-22 22:30 /usr/local/bin/unicode_start
# ls -l /usr/local/bin/u_s
lrwxrwxrwx
1 root
root
22 2004-09-02 23:14 /usr/local/bin/u_s -> /usr/bin/unicode_start
Vì chúng ta đã sử dụng đường dẫn tuyệt đối trong khi tạo liên kết tượng trưng nói trên,
nên u_s sẽ vẫn chỉ tới /usr/bin/unicode_start. Trong khi đó /usr/bin/unicode_start không còn
tồn tại nữa vì đã bị chuyển.
Có nghĩa là bây giờ u_s trở thành một liên kết bị vỡ. Cả đường dẫn tuyệt đối và đường
dẫn tương đối trong liên kết tượng trưng đều có mặt mạnh riêng của mình, và bạn có thể
chọn một loại đường dẫn thích hợp với nhu cầu của mình. Thường thì cả đường dẫn tương
đối và đường dẫn tuyệt đối đều làm việc tốt. Trong ví dụ sau, liên kết sẽ làm việc thậm chí
sau khi di chuyển cả hai tệp tin
# cd /usr/bin
# ln -s unicode_start u_s
24
người có quyền ghi vào thư mục /usr/bin theo mặc định
25
chúng tôi ngầm hiểu là bạn đã đặt các tệp tin unicode_start và u_s về lại chỗ cũ của nó