Con đường Bash hành động kỳ quặc


5

Tôi đang cố chạy openscad từ dòng lệnh và nó đưa ra một lỗi, nhưng nếu tôi gõ ra toàn bộ đường dẫn được báo cáo thì nó dường như hoạt động như hình dưới đây.

[dataproc@Euclid ~]$ which openscad
/usr/bin/openscad
[dataproc@Euclid ~]$ openscad
bash: /usr/local/bin/openscad: No such file or directory
[dataproc@Euclid ~]$ /usr/bin/openscad
[dataproc@Euclid ~]$ #this worked

Tôi hoàn toàn không biết gì về những gì đang diễn ra ở đây, bất kỳ sự giúp đỡ nào cũng sẽ được đánh giá cao.

bash  which 

4
Làm gì type openscad sản xuất?
Chris Eberle

1
đầu ra của echo $PATH

Câu trả lời:


6

which dối trá; nó có thể báo cáo mọi thứ dựa trên một tình huống lý tưởng hóa như lượm lặt được từ các tệp khởi động shell của bạn, trong khi thiếu một số khả năng và không nắm bắt bất kỳ thay đổi nào không được thực hiện bởi các tệp tiêu chuẩn. Sử dụng type để xem những gì vỏ thực sự nghĩ đang xảy ra.

2@mress:1 B$ type which
which is /usr/bin/which

Các lệnh bên ngoài đơn giản là không thể biết điều gì sẽ thực sự xảy ra, bởi vì chúng phải đoán các hàm và bí danh dựa trên các tệp khởi động của bạn và sẽ không biết về những thứ được tạo bởi autoload cơ chế; bạn cần phải tự hỏi cái vỏ nó sẽ làm gì.

2@mress:2 B$ type type
type is a shell builtin

Tất cả mọi thứ bạn viết là chính xác, nhưng không trả lời tại sao bash của anh ta trở lại với "openscad" đơn giản, "/ usr / local / bin / openscad: Không có tệp hoặc thư mục như vậy".

@kobame: cả tôi và bất kỳ ai khác đều không thể biết câu trả lời mà không biết đầu ra của type openscad. Đó là những gì tôi đã cố gắng giải thích; hình như tôi đã thất bại
geekosaur

[dataproc @ Euclid ~] $ type openscad openscad được băm (/ usr / local / bin / openscad)

Tôi không chắc "openscad được băm" nghĩa là gì nhưng không có bí danh cho lệnh. Cảm ơn tất cả các bạn đã phản hồi nhanh chóng.

@shawn: Chạy hash -r và sau đó type openscad lần nữa. Hình như nó có thể đã ở trong /usr/local/bin, đã di chuyển và shell không cập nhật hàm băm vị trí bên trong của nó.
geekosaur

0

Không biết .profile của bạn (.bashrc, v.v.) chỉ đoán, hơn là bạn có ở đâu đó

alias openscad=/usr/local/bin/openscad

và đó là lý do tại sao bash của bạn thử chạy / usr / local / bin / openscad và không phải là mặc định trong / usr / bin.

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.