bí danh vs xuất cho các lệnh đơn giản


33

Đối với các lệnh đơn giản như less, tốt hơn là tạo bí danh hoặc xuất các tùy chọn? Có bất kỳ lợi ích của cái này hơn cái kia?

Ví dụ: nếu tôi muốn lessluôn sử dụng -Rtùy chọn để hiển thị các ký tự thô, cả hai giải pháp này đều hoạt động:

  1. export LESS='-R'
  2. alias less='less -R'

Đối với một trường hợp đơn giản như thế này, có lợi ích nào của cái này hơn cái kia không? Bất kỳ kịch bản nào mà một người sẽ gây ra vấn đề và người khác sẽ không?

Tôi đã đọc qua một vài trang infomancũng như tìm hiểu về nó, nhưng tôi vẫn bị mắc kẹt trong vấn đề này.


1
Không, nó thực sự đi xuống sở thích cá nhân. Tôi đã bỏ phiếu để đóng cái này vì nó có vẻ nhiều ý kiến ​​hơn.
slm

Ba giải pháp nữa: tạo hàm shell (chỉ hoạt động trong shell nhưng không cần tương tác); tạo một tập lệnh trong ~ / bin hoặc bất cứ nơi nào (có phí khởi động shell nhưng hoạt động ngay lập tức trong việc chạy shell và từ các chương trình khác, và vẫn tồn tại); các tệp cấu hình dành riêng cho chương trình (để lessbạn có thể thực hiện bằng cách sử dụng lesskey)
deltab

3
@slm Nó không dựa trên ý kiến, hoặc ít nhất là nó không có nghĩa. Người ta có thể yêu cầu nhiều chi phí hơn và sử dụng tài nguyên không cần thiết, đặc biệt là trong một kịch bản phức tạp hơn. Người ta có thể chính xác hơn trong thế giới * nix, hoặc thậm chí có thể có một tiêu chuẩn chính thức ở đâu đó. Các lập trình viên luôn cảm thấy khó chịu vì "mã hóa cẩu thả" mọi lúc, ngay cả khi với tất cả ý định và mục đích, nó đạt được cùng một mục tiêu.
skittleys

Câu trả lời:


30

Một sự khác biệt giữa hai là bí danh chỉ là một tính năng vỏ. Các biến môi trường được kế thừa bởi tất cả các quy trình con (trừ khi cố tình xóa).

Các biến môi trường sẽ có nhiều khả năng làm việc ngay cả khi lessđược đưa ra một cách gián tiếp, chẳng hạn như thông qua vỏ khác (ví dụ tcsh), man, vim, psqlvv


3
Cụ thể, các bí danh chỉ hoạt động trong các vỏ tương tác : bạn không thể sử dụng chúng trong các tập lệnh shell mà đôi khi bạn có thể muốn. bash -c 'alias ll="ls -l"; ll'sẽ không sử dụng bí danh.
deltab

à, tôi không biết điều đó Vì vậy, nếu tôi có export LESS='-R'trong .zshrc của mình, hãy mở phiên zsh và sau đó chuyển sang bash trong cùng phiên đó (không xuất trong .bashrc), biến môi trường có còn được đặt không? Tôi đã nghĩ rằng cả hai sẽ bị mất ....
skittleys

@deltab ah, vâng, tôi biết về sự khác biệt đó, nhờ các vấn đề tô màu của grep. Cảm ơn vì chỉ ra điều ấy.
skittleys

1

Nó phụ thuộc rất nhiều vào công cụ bạn đang sử dụng. Sẽ có những công cụ cho phép bạn sử dụng, những công cụ khác chỉ cho phép một công cụ.

Có những lệnh được người khác gọi và đọc các biến môi trường và chấp nhận cùng một công tắc, nhưng thêm vào mỗi một công tắc giống nhau là một rắc rối, giống như trình biên dịch make, ở đây, biến môi trường tỏa sáng. Bạn đặt biến và quên nó đi. Đó cũng là một điểm cộng mà nó có thể là tạm thời và hoạt động cho một lệnh duy nhất.

Điểm mấu chốt, là một phương tiện ưu tiên và hành động tốt nhất cho nhiệm vụ, sẽ có lúc việc thiết lập bí danh dễ dàng và lâu dài hơn một biến môi trường và những lúc khác bạn cần một loạt các công cụ hoạt động theo cách tương tự như bạn tình yêu biến môi trường.

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.