Các which
lệnh trả về chỉ thực thi: nó không biết gì về bí danh, vì nó là một chương trình bên ngoài, và không có cơ chế để chuyển thông tin bí danh để một quá trình con.
Nếu bạn nhập lệnh, type -a cp
bạn sẽ thấy tất cả các giải thích có thể, theo thứ tự ưu tiên. Điều này bao gồm bất kỳ bí danh, vì type
là một bash
lệnh nội bộ.
Điều quan trọng là phải nhận ra rằng một bí danh sẽ không được giải thích bởi một quy trình phụ, chẳng hạn như tập lệnh hoặc trình soạn thảo tương tác có tùy chọn để chạy các lệnh hệ thống.
Nếu bạn tạo cp
một chức năng, thì phiên bản của bạn sẽ chạy trong các tập lệnh, mặc dù không phải từ các chương trình khác:
cp() { /usr/local/bin/gcp "$@"; }
Nếu bạn muốn bạn cp
làm việc ở mọi nơi, hãy thêm $HOME/bin
vào đầu PATH
danh sách của bạn và $HOME/bin/cp
chỉ vào nó:
ln -s /usr/local/bin/gcp $HOME/bin/cp
Điều này tạo ra một liên kết tượng trưng, mặc dù bạn có thể làm cho nó một liên kết cứng hiệu quả hơn một chút (bỏ qua -s
), nhưng điều này thường sẽ cần quyền root ( sudo ln ...
). Tạo một hàm và thêm vào PATH
biến sẽ được thực hiện trong một trong các bash
tập lệnh khởi động, với sự cho phép của người dùng.
PATH
envar.