Những shell nào không hỗ trợ mở rộng dấu ngoặc đơn và yêu cầu backticks?


8

Các khuyến nghị hiện đại là sử dụng:

$(...)

thay vì cũ hơn:

`...`

Chủ yếu để dễ đọc và để tránh sự cần thiết phải thoát ra khi làm tổ.

Những shell nào không hỗ trợ $(...)biểu mẫu, và có ai trong số chúng vẫn còn được sử dụng cho đến ngày hôm nay không?


1
Đọc qua Có backticks (tức là cmd) trong * sh shell bị phản đối? và bạn sẽ tìm thấy câu trả lời.
John1024

Nó nói "Lý do duy nhất để sử dụng backticks là vì khả năng tương thích với lớp vỏ Bourne thực sự (như Gia truyền)."
joeytwiddle 24/07/2015

1
Một điểm quan trọng là tất cả các hệ thống giống như Unix sau 90 được duy trì sẽ có một lệnh được gọi là shtrong môi trường phù hợp sẽ hỗ trợ $(...).
Stéphane Chazelas

Câu trả lời:


8

Shell Bourne ban đầu, csh hoặc tcsh đều không hỗ trợ $()và yêu cầu `` thay thế lệnh.

Shell Bourne không còn được sử dụng làm shell mặc định (/ bin / sh) trên nhiều hệ điều hành dựa trên UNIX. Tuy nhiên, các shell này vẫn được cung cấp bởi các nhà cung cấp hệ điều hành vì chúng vẫn được sử dụng vì lý do lịch sử.

Cả AIX và HP-UX đều có / bin / sh dưới dạng vỏ tuân thủ POSIX. Vỏ Bourne vẫn có sẵn trên AIX dưới dạng 'bsh' (nhưng không dùng nữa vào năm 1995 với AIX 4.1) và HP-UX 11.11 '/ usr / old / bin / sh' (Bourne đã bị xóa từ 11,23). Tôi không chắc chắn khi chuyển đổi được thực hiện, nhưng nó đã được nhiều năm trước.


5

Solaris 10 trở về trước /bin/shkhông hỗ trợ $().

Nó vẫn được sử dụng cho đến ngày hôm nay vì Solaris 10 vẫn đang được sử dụng, Sun không muốn thay thế nó bằng phiên bản phù hợp tiêu chuẩn (lên đến và bao gồm cả Solaris 10) - và vì hầu hết mọi người coi /bin/shlà vỏ mặc định và không biết làm thế nào để thực thi một cách hợp lý một tập lệnh với trình bao phù hợp POSIX .

Động lực của Sun không thay đổi /bin/shlà để tránh phá vỡ các tập lệnh shell hiện có dựa trên hành vi không tuân thủ.


2
@cuonglm, vâng, tôi vừa thử nó và tôi có thể xác nhận nó. Có thể nghĩ rằng Hurd sẽ được phát hành hơn Sun / Oracle thay đổi chính sách của mình vào /bin/sh...
maxschlepzig
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.