zsh - mở rộng hoàn toàn đường dẫn nhị phân trên <tab>


10

Trong hành vi zsh hiện tại của tôi, nhấn tab sau khi gõ "sudo" chỉ cần thêm một khoảng trắng.

$ sudo ...

Những gì tôi thực sự muốn là cho tab mở rộng hoàn toàn theo đường dẫn của nhị phân mà nó sắp thực hiện khi tôi nhấn tab, cho phép tôi xem những gì sẽ được chạy:

$ /usr/bin/sudo ...

Mục đích là để bảo vệ chống lại trường hợp người dùng cục bộ trên máy của tôi bị hack, một mục được thêm vào $PATHbiến của tôi và 'sudo' chạy một chương trình độc hại, đây sẽ là một sự leo thang dễ dàng để root.


Có một giải pháp khác không liên quan đến tab rebinding. Chuẩn bị tên lệnh bằng =và nhấn tab sau lệnh, và nó sẽ mở rộng tên lệnh thành đường dẫn đầy đủ.
Mischa Arefiev

Câu trả lời:


7

Sử dụng bindkeylệnh dựng sẵn để liên kết các khóa với các lệnh Zsh, như thế này:

bindkey "^I" expand-cmd-path 

nơi "^I"là Tab. Bạn chỉ có thể thả dòng này vào ~/.zshrctập tin của bạn . Cảnh báo: nó sẽ phá vỡ tự động hoàn thành các đối số.


Chúc mừng! Rõ ràng đây không phải là một giải pháp lý tưởng nên tôi đã ràng buộc nó với Ctrl-O. Tuy nhiên, không có nhiều tệp nhị phân nào nhập mật khẩu (sudo, ssh, gpg, ...), vì vậy tôi rất vui khi chỉ nhấn Ctrl-O bất cứ khi nào tôi sử dụng một trong số đó. Tôi cũng nên chỉ ra rằng không giải quyết được toàn bộ vấn đề vì bất kỳ ai có quyền truy cập vào tài khoản của tôi đều có thể lật đổ nó thông qua .zshrc hoặc xmonad.hs, nhưng hãy giúp tôi tìm đường đến đó!
Ali
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.