Tại sao lệnh mà mà Viking đưa ra kết quả trùng lặp?


Câu trả lời:


9

Kiểm tra đường dẫn của bạn. Không khó để kết thúc với các bản sao trong đó. Thí dụ:

»echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:
»which -a bash
/bin/bash
/usr/bin/bash

Điều này là do / bin của tôi là một liên kết tượng trưng đến / usr / bin. Hiện nay:

»export PATH=$PATH:/usr/bin
»echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/bin
»which -a bash
/bin/bash
/usr/bin/bash
/usr/bin/bash

Vì / usr / bin hiện ở trong $ PATH của tôi hai lần, nên which -atìm thấy bash tương tự hai lần.


2
Để mở rộng: Tùy chọn -a báo cáo TẤT CẢ các trận đấu trong PATH của bạn. Đó là những gì nó làm. Nếu, như đã lưu ý, $ PATH của bạn tham chiếu cùng một vị trí nhiều lần hoặc cùng một tệp thực thi ở nhiều nơi, nó sẽ hiển thị nhiều lần với -a (nhưng không phải khi bỏ qua tùy chọn đó).
SuperMagic

2

Như gợi ý nói và trích dẫn từ trang hướng dẫn, "Which takes one or more arguments. For each of its arguments it prints to stdout the full path of the executables that would have been executed when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories listed in the environment variable PATH using the same algorithm as bash(1)."Đối với -atùy chọn, nó liệt kê tất cả các tệp thực thi theo tên đó được tìm thấy trong $ PATH.


1

Hãy nhìn vào con đường của bạn:

echo $PATH

Có các mục trùng lặp trong đường dẫn của bạn (hoặc ruby ​​được cài đặt nhiều lần ở các vị trí khác nhau).


1

Thử

whereis -b ruby

Nếu bạn nhận được cùng một đầu ra, thì vấn đề nằm ở PATH của bạn.

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.