Tại sao từ "shell shell" được sử dụng để giải mã giao diện dòng lệnh?


28

Tôi tò mò về thuật ngữ "vỏ." Tôi nghĩ rằng tôi biết nó là gì (mặc dù sự khác biệt giữa "shell" và "terminal" vẫn còn mờ) nhưng tại sao từ "shell" lại được chọn để mô tả loại chương trình này?

Điều này có vẻ không quan trọng, nhưng thông thường khi các lựa chọn từ làm tôi bối rối, nó đang chỉ ra một khoảng trống trong sự hiểu biết của tôi.


Một thiết bị đầu cuối là một thiết bị hoặc ống I / O. Shell là một chương trình thực thi, tương tác trong thời gian thực nhận đầu vào của người dùng từ một thiết bị đầu cuối và sau đó thực hiện mọi thứ dựa trên nó. "Shell" mà không có điều khoản cho việc sử dụng tương tác trực tiếp là một số loại thông dịch kỹ thuật kịch bản.
LawrenceC

Câu trả lời:


8

Các Multics thuật ngữ có thể cung cấp một đầu mối. Shell được định nghĩa như vậy:

Bộ xử lý lệnh Multics được sử dụng để được gọi là shell. Chương trình này được thông qua một dòng lệnh để thực hiện bởi người nghe; nó phân tích dòng thành một tên lệnh và đối số, định vị lệnh và khởi tạo nó và gọi chương trình lệnh với các đối số là các chuỗi ký tự PL / I. Thật đơn giản để thay thế hệ thống được cung cấp mặc định bằng chương trình do người dùng cung cấp, bằng cách gọi cu_ $ set_cp (xem viết tắt). Một shell Unix bao gồm các khái niệm về cả shell và listener theo nghĩa Multics.

Mối quan hệ giữa vỏngười nghe có ý nghĩa cả về mặt từ nguyên và ẩn dụ [1].

[1] "Vì cái vỏ là biểu tượng của uy quyền, lời nói và thính giác, nghĩa là nói một biểu tượng của lời tiên tri ..."



10

Từ http://en.wikipedia.org/wiki/Thndry_shell#History

"Tên" shell "cho trình thông dịch dòng lệnh và khái niệm biến shell thành chương trình người dùng bên ngoài nhân hệ điều hành đã được giới thiệu trong Multics tiền thân của Unix."

Xa hơn về lỗ thỏ wikipedia tìm thấy điều này: "Louis Pouzin, đã giới thiệu thuật ngữ shell cho ngôn ngữ lệnh được sử dụng trong Multics"

Tôi chưa đọc nó đầy đủ, nhưng bài viết của anh ấy ở đây có thể cho bạn câu trả lời: http://www.multologists.org/shell.html

EDIT: thực sự nó không được giải thích. Ông chỉ "đặt ra" thuật ngữ. Không phải câu chuyện hài hước mà bạn đang hy vọng, phải không?


3
Không hài lòng, nhưng đó là cách nó đôi khi đi.
Eric Wilson

10

Có lẽ bởi vì nó là bề mặt, che chắn hạt nhân bên trong khỏi người dùng? Vì vậy, hạt nhân sẽ là viên ngọc bên trong vỏ.


Tôi đã luôn nghe nói rằng lớp vỏ là một lớp bảo vệ che chắn người dùng khỏi kernel.
Glorytoad

1

Có vẻ như câu trả lời nằm ở đây:

Ghi chú lịch sử: Rõ ràng, vỏ Multics ban đầu (giác quan 1) được gọi như vậy vì nó là vỏ (giác 3); nó chạy các chương trình người dùng không phải bằng cách khởi động các tiến trình riêng biệt, mà bằng cách tự động liên kết các chương trình thành mã riêng của nó, gọi chúng là chương trình con, sau đó tự động hủy liên kết chúng lại. Trình thông dịch lệnh VMS vẫn làm một cái gì đó rất giống như thế này.

- Wikipedia

Tức là, "shell" là một sự tương tự trong thế giới thực tốt cho cách Multics, tiền thân của Unix, chạy các chương trình.


Wikipedia không phải là một nguồn mặc dù. Sử dụng nó làm một, dẫn đến tìm nguồn cung ứng tròn, trong đó Wikipedia sử dụng một trang web làm nguồn, chính nó đã sử dụng Wikipedia làm nguồn. Như nó đứng, đây là đầu cơ thuần túy.
Evi1M4chine

0

Theo tôi hiểu, "shell" là một thuật ngữ cũ hơn cho cái mà bây giờ chúng ta sẽ gọi là "Giao diện người dùng chính". Thuật ngữ tương tự hiện đại sẽ là "Môi trường máy tính để bàn", vì ảo tất cả các hệ thống hiện đại đều sử dụng phép ẩn dụ trên máy tính để bàn.


1
Có rất nhiều sự chồng chéo, nhưng điều đó không chính xác. Mỗi shell là một giao diện người dùng. Nhưng không phải mọi giao diện người dùng là một vỏ. Shell là giao diện người dùng chính, xung quanh mọi thứ và từ đó mọi thứ bắt đầu. Đây là giao diện người dùng chính của hệ điều hành.
Evi1M4chine

-2

Nhân là lõi của hệ thống, trong khi lớp vỏ bao quanh nó và là giao diện giữa kernel và người dùng.

Trong bất kỳ hệ thống UNIX nào và ngay cả với các hệ thống Linux, hệ vỏ là nơi quản trị viên hệ thống làm việc để định cấu hình và quản lý hệ thống.

Thuật ngữ hiện đại thường sử dụng thuật ngữ CLI hoặc giao diện dòng lệnh để mô tả dấu nhắc shell. Điều này nằm trong giao diện người dùng GUI hoặc đồ họa. Tuy nhiên, bất kỳ Sysadmin thực nào cũng biết rằng bạn không nên sử dụng các công cụ GUI để định cấu hình UNIX / Linux và chỉ hoạt động trực tiếp tại dấu nhắc lệnh shell.

Điều này thậm chí còn phù hợp hơn hiện nay khi chúng ta nghe một số người đam mê Linux trẻ tuổi nói những điều như "Tôi sử dụng linux, nhưng tôi chưa thực sự học CLI".

Như một câu ngạn ngữ cũ là "Nếu bạn không thể làm điều đó tại dấu nhắc shell, bạn không thể làm điều đó."


Tôi đã bỏ phiếu xuống để nói sự thật. à tốt ...
Colinux
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.