Giải quyết các liên kết tượng trưng (pwd)


32

Nói rằng tôi làm như sau:

cd /some/path
ln -s /target/path symbolic_name

Nếu sau đó làm:

cd /some/path
cd symbolic_name
pwd

Tôi có:

/some/path/symblic_name

và không:

/target/path

Có cách nào để trình bao "giải quyết hoàn toàn" một liên kết tượng trưng (tức là cập nhật CWD, v.v.), như thể tôi đã trực tiếp thực hiện:

cd /target/path

?

Tôi cần chạy một số chương trình có vẻ "nhận thức" hoặc "nhạy cảm" về cách tôi đi đến con đường mục tiêu của mình và tôi muốn họ nghĩ rằng tôi đã đến con đường mục tiêu như thể đã thực hiện cd /target/pathtrực tiếp.


7
Liên quan đến câu hỏi này . Bạn có thể làm pwd -Phoặc alias pwd='pwd -P'cũng có cd -Pthể đi đến đường dẫn vật lý thay vì liên kết tượng trưng.
Martín Canaval

@ MartínCanaval Cảm ơn; đó là những gì tôi đang tìm kiếm!
Ryan

Câu trả lời:


35

Vỏ của bạn có tích hợp pwd, cố gắng "thông minh". Sau khi bạn thực hiện một cdliên kết tượng trưng, ​​nội bộ sẽ pwdgiả mạo đầu ra như thể bạn chuyển sang một thư mục thực.

Truyền -Ptùy chọn cho pwd, tức là chạy pwd -P. Các -Ptùy chọn (cho “vật lý”) cho pwdkhông phải làm bất kỳ theo dõi liên kết tượng trưng và hiển thị “thực” đường dẫn đến thư mục.

Ngoài ra, cũng nên có một nhị phân thực sự pwd, không làm được (và thậm chí không thể làm được) loại phép thuật này. Chỉ cần sử dụng tính khám phá nhị phân đó:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ /bin/pwd
/home/michas/a

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.