Tại sao dòng lệnh không tôn trọng thứ tự PATH trên OS X?


2

Tôi đã thêm một lệnh ssh bên trong ~/bin/ssh và sửa đổi PATH để bao gồm nó, trước các con đường khác.

Khi tôi chạy which ssh nó sẽ trả lời ~/bin/ssh nhưng khi tôi chạy ssh nó sẽ thực thi /usr/bin/ssh thay thế.

Tôi không có bí danh cho ssh.

Lý do là gì và làm thế nào tôi có thể sửa chữa nó?

Câu trả lời:


4

Không được dùng which, sử dụng type. Các which lệnh trong shell mặc định (bash) là một tiện ích bên ngoài không biết về bí danh và hàm. Mặt khác, type là một tiện ích nội bộ sẽ cho bạn biết liệu đối số của nó là bí danh, hàm, tiện ích tích hợp hay lệnh bên ngoài.

Các which lệnh được đề cập trong hướng dẫn và hướng dẫn chỉ vì lý do lịch sử - 30 năm trước type lệnh không tồn tại ở mọi nơi và một số người đã chậm thích nghi.

Để biết thêm chi tiết, bao gồm một cuộc thảo luận về đạn pháo lịch sử và hiện tại, xem Tại sao không sử dụng dịch vụ mà Dùng gì sau đó?

$ type cp
cp is aliased to `cp -i'
$ type mkcd
mkcd is a function
mkcd ()
{
…
}
$ type type
type is a shell builtin
$ type cat
cat is /bin/cat

Trong zsh, bạn có thể sử dụng which: zsh có cả hai typewhich như các lệnh tích hợp.

Cũng lưu ý rằng nếu bạn vừa cài đặt hoặc gỡ bỏ một chương trình, trình bao có thể đã ghi nhớ vị trí cũ của nó. Ví dụ: nếu bạn chỉ cài đặt phiên bản chương trình của riêng mình trong một thư mục đi trước các thư mục hệ thống trong $PATH, shell có thể tiếp tục gọi chương trình đi kèm với hệ thống. Đây chỉ là một vấn đề trong hệ vỏ đã chạy tại thời điểm cài đặt hoặc gỡ bỏ. Để làm mới bộ nhớ của shell với dữ liệu hiện tại, hãy chạy lệnh hash -r hoặc là hash COMMANDNAME.


0

Bí ẩn đã được giải quyết, tôi có một chức năng trong bash_profile với tên này ...

Tìm thấy nó bằng cách sử dụng: set | grep ssh


Nếu bạn thấy rằng bạn muốn một chức năng bao quanh ssh, có lẽ bạn nên sử dụng một tập tin cấu hình thay thế. Bạn có thể xác định các phím tắt cho tên máy chủ, tên người dùng và các tùy chọn khác trong ~/.ssh/config.
Gilles
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.