Có bao nhiêu cách khác nhau để bạn có thể tạo ra một bí danh của Google trong Bash?


10

Tôi chỉ biết hai cách: alias foo=barfunction foo() { bar }.

Lý do tôi hỏi là - đột nhiên trong một trong các phiên bash của tôi - tôi không thể chạy lnlệnh vì bashlỗi với -bash: /usr/local/.../ln: No such file or directory(trong đó /usr/local/.../là một trong các mục trong PATHbiến môi trường của tôi ).

Tuy nhiên, đây không phải là PATHvấn đề vì nếu tôi chạy, which lnnó sẽ xuất ra nhị phân dự kiến /usr/bin/ln(mà tôi có thể chạy tốt nếu tôi chỉ định đường dẫn tuyệt đối).

Tôi cũng đã kiểm tra lntrong aliasfunctionkhai báo của mình và không có gì:

$ declare -f | grep ln
$ alias | grep ln

Vấn đề chỉ xảy ra trong một phiên bash. Nếu tôi bắt đầu một trình bao mới, nó sẽ hoạt động tốt trở lại, nhưng tôi muốn biết điều gì đã gây ra sự cố bất ngờ này trong một phiên bash cụ thể này.

Bất kỳ ý tưởng như những gì có thể gây ra điều này?

Câu trả lời:


10

Cẩn thận khi sử dụng whichlệnh. Tốt hơn để sử dụng type ...lệnh.

$ type ln
ln is /bin/ln

Bạn cũng có thể sử dụng whereislệnh:

$ whereis ln
ln: /bin/ln /usr/share/man/man1p/ln.1p.gz /usr/share/man/man1/ln.1.gz

Bạn đúng! Khi tôi chạy type lntôi có ln is hashed (/usr/local/.../ln)vẻ như là vấn đề, nhưng chính xác thì nó có nghĩa là gì "băm"? Tôi chưa bao giờ nghe nói về tính năng đó trong bash.
etherice

3
@etherice - Bash duy trì hàm băm (danh sách khóa = giá trị) của tên lệnh và vị trí của lệnh. Bạn có thể xem danh sách với hash -llệnh. Nó được xây dựng động khi bạn sử dụng các lệnh.
slm

@etherice - Tôi vừa nêu lên câu hỏi của bạn để bạn chỉ còn 4 điểm 8-). Bạn có thể chấp nhận câu trả lời khi vấn đề của bạn được giải quyết và bạn cảm thấy đó là câu trả lời tốt nhất.
slm

@etherice - có người khác chỉ nâng cấp bạn để bây giờ bạn có 16 điểm.
slm

1
Cảm ơn! Tôi đã chạy hash -rđể thiết lập lại hashtable lệnh-đường dẫn và lntrở lại trật tự làm việc ngay bây giờ.
etherice
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.