No creo que el shell / utilidades en Unix histórico ni en algo tan "reciente" como 4.4BSD sea compatible con un guión doble (o dos guiones consecutivos) como final delimitador de opciones . Con FreeBSD , puede ver, por ejemplo, una nota introducida en las rm
páginas de manual con la versión 2.2.1 (1997). Pero esto es solo la documentación para un comando.
Mirando el registro de cambios de archivos de GNU más antiguo que puedo encontrar, veo esto 1 (ligeramente alterado):
Tue Aug 28 18:05:24 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* touch.c (main): Don't interpret first non-option arg as a <---
time if `--' is given (POSIX-required kludge).
* touch.c: Add long-named options.
* Many files: Include <getopt.h> instead of "getopt.h" since
getopt.h will be in the GNU /usr/include.
* install.c: Declare some functions.
* touch.c, getdate.y, posixtime.y, mktime.c: New files, from bin-src.
* posixtime.y: Move year from before time to after it (but
before the seconds), for 1003.2 draft 10.
Esto es anterior a Linux . Claramente es para tener en cuenta el hecho de que es posible que desee crear un archivo con un nombre que contenga el mismo número de dígitos que una especificación de tiempo (número decimal de ocho o diez dígitos), en lugar de especificar una marca de tiempo para un archivo existente ...
- Entonces, ¿es posix.1 que introdujo el doble guión (
--
) como un fin delimitador de opciones en shells de Unix? - ¿Comenzó todo esto porque algunas personas querían usar dígitos en los nombres de archivo a
touch
principios de los 90 y luego esto continuó de manera gradual, una utilidad a la vez durante una década? - ¿De qué se trata el enérgico comentario en el registro de cambios?
- ¿Cuándo se introdujo la directriz 10 ( El argumento - debería aceptarse como un delimitador que indica el final de las opciones. [...] ) a la sintaxis de la utilidad POSIX ?
1. A diferencia de esto, es decir, documentar las opciones largas en todos los comandos de uso a nivel mundial, lo que no está relacionado. Por otro lado, puede ver que la referencia al delimitador aparece en algo como GNU rm.c en 2000 como un comentario, antes de exponerse al usuario final en 2005 (la función diagnostose_leading_hyphen ). Pero todo esto es mucho más tarde y se trata de un caso de uso muy específico.
getopt
se escribió a principios de la década de 1980. Si alguien puede obtener el papel getopt de Uniforum '85, eso podría dar algo de historia.
--
.
getopt
soporte--
.