bash 4.3 Các lệnh nhiều dot dot bị lỗi âm thầm trên Fedora


7

Tôi chỉ lưu ý điều này trên bash 4.3; số phiên bản chính xác là 4.3.42 (1) -release (x86-redhat-linux-gnu).

$ ..
$ ...
$ ....
$ .....

Tại sao "lệnh không tìm thấy" không được nhắc?

$ ...
$ echo $? 
$ 127

Tôi đã kiểm tra $PATHaliaskhông có gì; Người đàn ông cũng không giúp được gì.
Bash chạy trên Fedora Linux, nhưng tôi nghĩ nó không liên quan đến HĐH.

BIÊN TẬP

Tôi chỉ lưu ý rằng nó giống nhau cho bất kỳ lệnh bắt đầu chấm

.za
.zaza
..za
..zaza

Khi bạn làm điều đó bạn có nhận được bất kỳ phản ứng nào không?
John Militer

@ John Có nó giống như tôi đã đăng ở đây. Trên máy tính của tôi, theo truyền thống tôi có bí danh "..." đến sudo -sđây tôi quên làm như vậy, đây là cách tôi phát hiện ra nó.
Emmanuel

Hoạt động như mong đợi trên Debian 4.3.42 (1) - miễn phí. Bạn có một command_not_found_handlechức năng?
derobert

Câu trả lời:


9

Điều này được gây ra bởi việc xử lý lệnh không tìm thấy ở Fedora.

Chạy một lệnh không xác định (bao gồm ...vv nếu không có bí danh phù hợp) sẽ command_not_found_handlebị chạy với lệnh bị thiếu làm tham số (xem /etc/profile.d/PackageKit.shđịnh nghĩa của nó). Trong kịch bản đã cho, trình xử lý sau đó chạy /usr/libexec/pk-command-not-found, một lần nữa với lệnh bị thiếu làm tham số. Trước đây, pk-command-not-foundchỉ cần bỏ qua bất kỳ lệnh nào bắt đầu bằng. :

if (argv[1][0] == '.')
    goto out;

và thoát với mã 127.

Hành vi này được giới thiệu để sửa lỗi Red Hat # 1151185 , cũng được tham chiếu trong Bash không in bất kỳ thông báo lỗi nào khi các lệnh không tồn tại bắt đầu bằng dấu chấm và có lỗi yêu cầu sửa lỗi ( Red Hat # 1292531 ). Phần lớn đã được sửa trong FC 27 với các bản cập nhật, vì GóiKit 1.1.8 (xem cam kết này ): bây giờ các lệnh có dấu chấm hàng đầu được xử lý, chỉ ...bị bỏ qua.


Cảm ơn bạn, tôi nghĩ rằng tôi sẽ xem xét để sử dụng một vỏ khác.
Emmanuel

@Emmanuel hoặc bạn chỉ có thể vô hiệu hóa trình xử lý lệnh không tìm thấy bị hỏng của Fedora bằng một cái gì đó giống như unset -f command_not_found_handletrong ~ / .bashrc của bạn. Hoặc gỡ bỏ cài đặt bất cứ điều gì Fedora gói phần mềm được cung cấp các chức năng lệnh-not-found (trên debian, tôi chạy apt-get purge command-not-foundtrên tất cả các debian hộp i xây dựng Tôi làm tương tự cho các. bash-completionGói Cả hai đều xa gây khó chịu hơn bất kỳ lợi ích họ mang lại.)
cas

Lưu ý rằng bất kể lỗi này là gì, nó đã được sửa.
mattdm

@StephenKitt Hmmm, lạ thật. Không phải của tôi. Tôi nhận được "command not found" trong hầu hết các trường hợp ví dụ, và bổ sung Similar command is: '..'với ....
mattdm

Trên thực tế, theo liên kết github của bạn trong câu trả lời của bạn bây giờ hiển thị mã cố định. Cam kết này từ hai tháng trước đã làm điều đó - thay vì chỉ tìm kiếm một sự khởi đầu ., nó kiểm tra rõ ràng ....
mattdm
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.