Giả sử bạn có các thư mục /dir1
và /dir2/linked
, trong đó cái sau là một liên kết tượng trưng cho cái trước.
Khi bạn cd
đến linked
và pwd
, bạn nhận được đầu ra /dir2/linked
. Nếu bạn sau đó cd ..
, bạn sẽ được đưa vào /dir2
. Hành vi này phù hợp với khái niệm bạn đang ở /dir2/linked
trước đây. Tuy nhiên, theo tôi hiểu, thư mục mẹ ( ..
) của bất kỳ thư mục nào được lưu trữ trong thư mục inode (tức là: vật lý trong đĩa). Rõ ràng, vì /dir2/linked
thực sự /dir1
, thư mục mẹ trên inode phải là/
Để làm phức tạp thêm vấn đề, trong khi bên trong /dir2/linked
, đầu ra ls ..
và cd .. ; ls .
khác nhau! Nó có vẻ như cd
tôn vinh con đường liên kết, trong khi ls
tôn vinh con đường "vật lý". Như đã đề cập trong câu hỏi này , có cd -P
đối với trường hợp sử dụng này, mặc dù.
man pwd
đề cập đến các thư mục làm việc "vật lý" và "hợp lý", nhưng tôi vẫn có một vài câu hỏi tại thời điểm này:
- Là hành vi này luôn được cung cấp bởi các
PWD
biến môi trường, như được đề cập trongman pwd
? - Tại sao mặc định
cd
vàls
có các hành vi khác nhau, nếu cả hai đều là lệnh shell (nghĩa là: không phải chương trình)? - Liệu chương trình điển hình (không phải lệnh shell) sử dụng
PWD
thay cho đường dẫn vật lý? Tôi nhận ra rằng nó tùy thuộc vào việc thực hiện, nhưng có bất kỳ quy tắc nào không?