Bí danh: sự khác biệt giữa .bash_rc, .bash_aliases và / usr / local / bin


9

Chơi xung quanh với Terminal, tôi nhận thấy rằng có nhiều cách để tạo bí danh vĩnh viễn .

Tôi là người mới sử dụng Linux và từ những gì tôi biết, đang làm:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. thêm desired_alias = '/path/to/executable'vào~/.bashrc
  3. không chú ý đến những dòng này trong ~/.bashrc:

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi

    và đưa desired_alias = '/path/to/executable'vào~/.bash_aliases

Tất cả đều có tác dụng như nhau.

Sự khác biệt giữa phương pháp thứ nhất và thứ hai là gì?

Câu trả lời:


10

Với phương pháp đầu tiên bạn không tạo bí danh, bạn đang tạo một liên kết tượng trưng. Symlinks là viết tắt của các liên kết tượng trưng:

Liên kết tượng trưng là các tệp đóng vai trò là con trỏ đến các tệp khác. [...] Liên kết tượng trưng là một loại tệp đặc biệt có nội dung là một chuỗi là tên đường dẫn của tệp khác, tệp mà liên kết đề cập đến. Nói cách khác, một liên kết tượng trưng là một con trỏ đến một tên khác và không phải là một đối tượng cơ bản.

Tìm hiểu thêm về symlink ở đâyở đây .

Thực tế, chỉ với phương pháp thứ hai, bạn đang tạo ra một bí danh.

Bí danh cho phép một chuỗi được thay thế cho một từ khi nó được sử dụng làm từ đầu tiên của một lệnh đơn giản. Shell duy trì một danh sách các bí danh có thể được thiết lập và bỏ đặt với các lệnh dựng sẵn bí danh và unalias (xem SHELL BUILTIN THÔNG TIN bên dưới). Từ đầu tiên của mỗi lệnh đơn giản, nếu không được trích dẫn, được kiểm tra xem nó có bí danh không. Nếu vậy, từ đó được thay thế bằng văn bản của bí danh.

Bạn có thể định nghĩa bí danh ở bất cứ nơi nào bạn có thể nhập lệnh và trình bao ( bash trong trường hợp này) diễn giải nó, tuy nhiên để bí danh có sẵn trong các shell khác, nó cần được xác định trong tệp được giải thích bởi shell khi khởi động (khởi động shell, không khởi động máy tính).

Đối với bash, đây là /etc/bash.bashrc(hệ thống rộng) và ~/.bashrc. Các tệp này được diễn giải khi shell bắt đầu ở chế độ tương tác (như khi sử dụng Terminal). Tôi sẽ không đề cập đến các tập tin hồ sơ vì chúng phục vụ một mục đích khác.

Vì vậy, bạn muốn thêm bí danh của mình ~/.bashrcđể có sẵn chúng trong mọi vỏ tương tác.

Các .bash_aliasesphương pháp hoàn thành chính xác những điều tương tự như đặt bí danh trong ~/.bashrcnhưng có lợi ích bổ sung là dễ dàng hơn để được phân tích và thao túng bởi các chương trình.

Nguồn . ~/.bash_aliasescó nghĩa là (tải) _~/.bash_aliases_trong ngữ cảnh của shell hiện đang chạy.


@lilo bạn đánh tôi hướng dẫn! +1
myusuf3

@gc Tôi đánh bao tải nên đi hoang :)
Li Lo

@lilo hahahha :)
myusuf3

1
Bạn có thể nghĩ rằng nó hoạt động như nhau, nhưng nó không phải là. Xin vui lòng đọc các tài liệu về symlink mà tôi đã giới thiệu trong câu trả lời của tôi. Symlink và bí danh phục vụ các mục đích khác nhau và được tạo ra với mục đích khác nhau trong tâm trí. Để cho bạn một ví dụ tại sao các liên kết tượng trưng không hoạt động như bí danh, hãy thử điều này - xác định một bí danh như: alias px = "ps axu". Bây giờ hãy cố gắng thực hiện tương tự với symlinks.
Li Lo

1
@Li Lo: tôi đã hiểu sự khác biệt giữa synlink và / usr / local / bin, nhưng câu hỏi của tôi (có thể hơi lạc đề với câu hỏi chung) là: exaclty / usr / local / bin được sử dụng để làm gì?
Strae
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.