Câu trả lời:
Đ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 đó foobar1
và foobar2
là cùng một biến.)
(Tôi nghĩ rằng tôi đã nhớ một umount
trang 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ờ.)
directory
, chưa phù hợp). Vì vậy, tôi tự hỏi tại sao lại passwd
bị cắt ngắn thành 6 ký tự (chưa có passwd
lệnh nào cả /etc/passwd
).
urandom
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 umount
lệ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 " ).
Vì lý do tương tự, creat
cuộc gọi hệ thống không được đánh vần create
?
.c
(hoặc.s
) phần mở rộng = giới hạn tên tệp 8 ký tự.