Các whichlệ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 cpbạ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ì typelà một bashlệ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 cpmộ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 cplàm việc ở mọi nơi, hãy thêm $HOME/binvào đầu PATHdanh sách của bạn và $HOME/bin/cpchỉ 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 PATHbiến sẽ được thực hiện trong một trong các bashtập lệnh khởi động, với sự cho phép của người dùng.
PATHenvar.