Cách vô hiệu hóa tự động cd cd trong zsh với oh-my-zsh


29

Googling điều này đã không hiển thị bất kỳ kết quả. Ý tôi là: Tôi có một tệp nhị phân có tên xtrong đường dẫn của tôi (không phải thư mục hiện tại, nhưng nó nằm trong PATH) và cũng là một thư mục có cùng tên trong thư mục làm việc hiện tại. Nếu tôi gõ x, tôi muốn tệp nhị phân thực thi, nhưng thay vào đó, nó nằm trong thư mục đó. Làm thế nào để tôi sửa lỗi này?

Câu trả lời:


46

Đó là ba câu hỏi trong một ;-)

Tùy chọn AUTO_CD và cách tìm nó

Trước hết tùy chọn bạn đang tìm kiếm là AUTO_CD. Bạn có thể dễ dàng tìm thấy nó bằng cách tìm kiếm man zshoptions. Sử dụng chức năng tìm kiếm máy nhắn tin của bạn, thông thường bạn nhấn /và nhập từ khóa. Với nbạn nhảy đến sự xuất hiện tiếp theo. Điều này sẽ đưa ra những điều sau đây:

[..]
   Changing Directories
       AUTO_CD (-J)
              If  a  command is issued that can't be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory.
[..]

Tùy chọn có thể được bỏ đặt bằng cách sử dụng unsetopt AUTO_CD.

Tắt nó đi

Bạn đang sử dụng oh-my-zsh được mô tả là

"Khung dựa trên cộng đồng để quản lý cấu hình zsh của bạn" Bao gồm hơn 120 plugin tùy chọn (rails, git, OSX, hub, capistrano, brew, ant, macports, v.v.), ...

Vì vậy, điều tiếp theo là tìm hiểu, làm thế nào để bật / tắt các tùy chọn theo khung.

Tệp readme.textile nói rằng cách ưa thích để bật / tắt plugin sẽ là một mục trong .zshrc của bạn: plugins=(git osx ruby) Tìm hiểu xem plugin nào sử dụng tùy chọn AUTO_CD. Như được phát hiện từ trang này, nó có thể được gọi thông qua khóa -J hoặc AUTO_CD. Vì oh-my-zsh có sẵn trên github, nên việc tìm kiếm nó sẽ xuất hiện tệp lib/theme-and-appearance.zsh. Nếu bạn không muốn vô hiệu hóa toàn bộ "chủ đề và giao diện" của plugin, hãy đặt một unsetopt AUTO_CD.zshrc của bạn. Không sửa đổi trực tiếp các tệp của oh-my-zsh, vì trong trường hợp bạn đang cập nhật khung, các thay đổi của bạn sẽ bị mất.

Tại sao thực thi không được gọi trực tiếp

Câu hỏi thứ ba của bạn là làm thế nào để thực hiện trực tiếp một tệp nhị phân: Bạn phải thực thi tệp nhị phân của mình thông qua một đường dẫn, ví dụ với tiền tố ./như trong ./do-something. Đây là một loại tính năng bảo mật và không nên thay đổi. bản lề của việc cắm vào một chiếc USB, gắn nó và nhìn vào nó ls. Nếu có một tệp thực thi được gọi là lsxóa thư mục chính của bạn, mọi thứ sẽ biến mất, vì điều này sẽ ghi đè lên thứ tự $ PATH của bạn.

Nếu bạn có các lệnh bạn gọi liên tục, thiết lập bí danh trong .zshrc của bạn sẽ là một giải pháp phổ biến.


4
Cảm ơn nhiều! Điều tôi cần là unsetopt auto_cddòng (tôi đã đề cập rõ ràng rằng tệp thực thi nằm trong đường dẫn của tôi; tuy nhiên, lời giải thích có thể giúp người dùng khác tìm ra mọi thứ).
Gabi Purcaru

Cảm ơn bạn đã trả lời kỹ lưỡng và cung cấp chi tiết về cách bạn tìm thấy thông tin (do đó giúp người khác tự tìm thông tin như thế này trong tương lai).
dấu gạch chéo

2
Đoạn cuối của bạn không có ý nghĩa. OP đang hỏi về một nhị phân trong PATHbiến môi trường của họ mà họ muốn được ưu tiên hơn autocd. Nó không liên quan gì đến việc shell script không có khả năng chạy một tệp thực thi từ một đường dẫn mà không chỉ định ./hoặc /.
Qix

Liên kết đầu tiên đến readme không hoạt động. Nó đây rồi Hơn nữa, libthư mục OMZ không có gì để làm với plugins. Trả lời câu hỏi và như bạn đã nói, lệnh chính xác là unsetopt.
Timo
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.