Есть ли техническая причина, почему? Это артефакт с первых дней существования Linux или Unix, и если да, то есть ли причина, почему он сохраняется?
Я не могу придумать техническую причину - исторически это просто ASCII. Как он читается, а затем печатается, находится в руках кодера.
Unix-история-репо / USR / SRC / ЦМД / passwd.c
char *uname;
insist = 0;
if(argc < 2) {
if ((uname = getlogin()) == NULL) {
printf ("Usage: passwd user\n");
goto bex;
} else {
printf("Changing password for %s\n", uname);
}
} else {
uname = argv[1];
}
Так как я провел некоторое время, просматривая страницы справочника архива (например, 1BSD был первым дистрибутивом программного обеспечения Беркли Билла Джоя ), я не видел ничего, что определяло бы имена пользователей. Это не значит, что его не существует, но я его не видел.
Итак, мы остаемся с историческим человеческим контекстом. Когда я начал заниматься технологиями в 1980 году, мы всегда использовали наше настоящее имя для входа в систему. Обычно имя, фамилия и имя, если не было ограничения по длине. Это было важно, так как ваше имя пользователя использовалось в качестве вашего адреса электронной почты. Тогда никто не отправлял письмо, которое было анонимным. Конечно, были некоторые исключения, я их не помню. В целом, хотя, я считаю, что это так.
И согласно rfc5321 # page-63, нет никаких ограничений на то, чтобы «имя» электронной почты начиналось с цифры. Gmail создаст все числовые имена пользователей. (получите это, они идут быстро).
Поэтому, если есть какой-либо код, который отклоняет имя пользователя, начинающееся с [0-9], то, вероятно, он появился позже, когда какой-то программист подумал: «Почему у вас есть число в качестве имени?». Еще раз, я должен сказать, что вполне может существовать исторический код Unix, который отклонял имя пользователя, начинающееся с цифры. Я просто не видел этого. Ранние таблицы паролей были отредактированы вручную, я, конечно, помню, как часто делал это, даже в начале 90-х годов.
Что касается того, почему он сохраняется, я процитирую stroustrup, C ++ 11FAQ, когда будут доступны новые стандартные библиотеки?
Чтобы сделать проблему более сложной, помните, что невозможно исключить более старые функции, даже если комитет согласен с тем, что они плохие: опыт показывает, что пользователи заставляют каждого разработчика предоставлять устаревшие и запрещенные функции с помощью переключателей совместимости (или по умолчанию) на протяжении десятилетий.