Tại sao 'umount' không được đánh vần là 'unmount'?


64

Tôi tự hỏi nếu có bất kỳ lý do lịch sử hoặc thực tế tại sao umountlệnh không unmount.

Câu trả lời:


79

Điều này bắt nguồn từ phiên bản đầu tiên của Unix , nơi tất cả các tên tệp tiêu chuẩn chỉ dài tối đa 6 ký tự passwd, mặc dù phiên bản này hỗ trợ 8 ký tự trong một tên tệp . Hầu hết các lệnh có tệp nguồn liên quan kết thúc bằng .c(ví dụ umount.c), chỉ còn lại 6 ký tự cho tên cơ sở.

Giới hạn 6 ký tự cũng có thể là sự nắm giữ từ phiên bản phát triển trước đó hoặc được kế thừa từ hệ thống IBM hiện tại có giới hạn 6 ký tự. (Việc triển khai C sớm có giới hạn 6 ký tự đối với số nhận dạng - số nhận dạng dài hơn được chấp nhận nhưng trình biên dịch chỉ nhìn vào 6 ký tự đầu tiên, do đó foobar1foobar2là cùng một biến.)

(Tôi nghĩ rằng tôi đã nhớ một umounttrang nam liệt kê chính tả là lỗi không rõ nguồn gốc, nhưng tôi không thể tìm thấy ngay bây giờ.)


21
Tên lệnh 6 ký tự + .c(hoặc .s) phần mở rộng = giới hạn tên tệp 8 ký tự.
geekizard

@geekizard: Ah, phải, tập tin nguồn. Nếu bạn viết câu trả lời, tôi sẽ xóa câu trả lời của tôi.
Gilles 'SO- đừng trở nên xấu xa'

5
Nâng cao, chỉ cần chú thích nó nếu bạn muốn.
geekizard

@geekizard: Tôi cũng nghĩ về trang người đàn ông, nhưng V1 không có lệnh người đàn ông (và một trong những trang người đàn ông được gọi directory, chưa phù hợp). Vì vậy, tôi tự hỏi tại sao lại passwdbị cắt ngắn thành 6 ký tự (chưa có passwdlệnh nào cả /etc/passwd).
Gilles 'SO- ngừng trở thành ác quỷ'

2
Có lẽ đó là do hậu tố Hy Lạp, có nghĩa là "không", điều đó cũng sẽ giải thíchurandom
Anthony Garcia

8

Có vẻ như đã có một số thông tin sai lệch ngồi ở đây một thời gian.

Lý do rất có thể cho umountlệnh có tên viết tắt là vì nó xuất phát từ tên của lệnh gọi hệ thống mà nó sử dụng : umount().

Lý do có thể xảy ra mà cuộc gọi hệ thống "không đếm được" có tên umount()là do các trình liên kết ban đầu đã giới hạn độ dài của số nhận dạng bên ngoài chỉ có 6 ký tự (chỉ một trường hợp) trên một số loại hệ thống (và thật hợp lý để duy trì khả năng tương thích với các công cụ như vậy tại thời điểm đó) và "umount" là một dạng viết tắt logic của "unmount". Xem trang 179 của phiên bản đầu tiên của Ngôn ngữ lập trình C để biết danh sách các đặc điểm định danh bên ngoài của các hệ thống quan tâm khác nhau tại thời điểm xuất bản.

Cũng lưu ý rằng các trình biên dịch C ban đầu coi 8 ký tự đầu tiên của mã định danh là quan trọng, nhưng cho phép các mã định danh dài hơn. (K & R trang 33)

Lưu ý rằng độ dài của mã định danh trong bảng ký hiệu không liên quan gì đến độ dài tên tệp, ít nhất là không nằm trong Unix (bảng ký hiệu Unix, kể từ V1, có 8 ký tự cho mã định danh, mặc dù được ghi chú trong hướng dẫn sử dụng V1 mà trình biên dịch mã " tạo ra các ký hiệu có tối đa 7 byte " ).


-1

Vì lý do tương tự, creatcuộc gọi hệ thống không được đánh vần create?

https://stackoverflow.com/questions/1713457/what-did-ken-thndry-mean-when-he-said-id-spell-create-with-an-e


4
Không. Sự tiếc nuối trong trích dẫn mà bạn tham khảo là bởi vì họ có thể đã thêm 'e' ngay cả khi giới hạn 6 ký tự được tranh luận trong câu trả lời khác. Thực sự không có lý do chính đáng nào để nó bị cắt cụt, không giống như với umount.
Warren Young

Tôi đoán thời đó là truyền thống để cắt bớt các chữ cái nếu bạn có thể.
Shadur
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.