Обработка командной строки определяется в исходном коде программы, которая стала конкретной командой.
Чаще всего куча команд использует определенную библиотеку обработки командной строки (GNU getargs, или в случае сценариев Perl GetOpts::Long являются примерами таких), хотя независимо от того, выполнялась ли обработка командной строки вручную или использовалась какая-либо конкретная Библиотека полностью зависит от команды.
Поэтому возможности обработки командной строки (например, поддержка переупорядочения, использование --
для определения конца флагов, свертывание -a -b
в -ab
и т.д.) Полностью зависят от исходного кода отдельных приложений и / или библиотеки, которые они используют.
Конкретный шаблон, который вы отметили, вероятно, связан с различными библиотеками обработки командной строки (или отдельным кодом обработки аргументов, использованным разработчиками вручную) между Linux с его корнями GNU и OSX (IIRC, BSD, но не уверен)