Ngôn ngữ nào được sử dụng để xây dựng các lệnh Unix?


Câu trả lời:


26

Nó thường đơn giản C. Các lệnh lspwdđến từ GNU Coreutilsgói trong (hầu hết?) Các bản phân phối Linux (và có thể một số hệ thống khác). Bạn có thể tìm thấy mã trên trang chủ của họ .

Đối với coreutilscụ thể, bạn xây dựng chúng với các bước thông thường: sau khi giải nén nguồn, vấn đề:

./configure --prefix=/some/path
                   # type ./configure --help to get the available options
make
make install       # could require root access depending on the path you used

Hãy cẩn thận - cài đặt các tiện ích cơ bản như các tiện ích trên bản sao phân phối của bạn là một ý tưởng tồi . Sử dụng bất cứ trình quản lý gói nào mà hệ thống của bạn đi kèm với điều đó. Bạn có thể cài đặt một tiền tố khác mặc dù (cài đặt ở đâu đó vào thư mục chính của bạn là một ý tưởng tốt nếu bạn muốn thử nghiệm).

Lưu ý rằng mặc dù có một cdtệp thực thi , nhưng cdtrong hầu hết các trường hợp , bạn sẽ sử dụng một tệp thực thi riêng biệt. Nó phải là một trình dựng sẵn shell (nếu không nó không thể thay đổi thư mục hiện tại của shell - điều này phải được thực hiện bởi chính quá trình này), vì vậy nó được viết bằng cùng ngôn ngữ với shell (thường là Cquá).

Những ví dụ khác:

  • pwdNguồn OpenSolaris .
  • FreeBSD ls

Bạn có thể tìm thấy nhiều hơn trong số này trực tuyến.


5

Chỉ cần thêm một chút vào câu trả lời của Mat, mặc dù Unix triển khai chúng như các chương trình độc lập, nhiều lệnh cũng được triển khai bên trong bash(để lưu nó phải sinh ra một quy trình mới) xem bashtrang man để biết thêm chi tiết hoặc xem qua trình thẻ .

bash cũng được viết bằng C

Có thể đáng lưu ý rằng các lệnh này không phải được viết bằng C - thực sự, một số bản phân phối linux nhỏ sử dụng các luatriển khai này và các lệnh khác.


2
Vâng bash, hoặc bất kỳ vỏ tốt khác.
rds

1
Cũng lưu ý rằng một số lệnh như cdphải được tích hợp sẵn để hoạt động hiệu quả.
AProgrammer
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.