Как вам сказали, нулевой аргумент - это то, что появляется в argv[0]
, обычно это имя исполняемой программы.Однако «условно» означает, что там может появиться что угодно.
Опция -l
добавляет тире перед именем команды (нулевой аргумент).Это соглашение, используемое программой login
, чтобы сообщать оболочкам, что они являются «оболочками входа в систему» и должны обрабатывать профили или эквивалент.
Например:
$ ps
PID TTY TIME CMD
37617 ttys000 0:00.01 -bash
$ bash
$ ps
PID TTY TIME CMD
37617 ttys000 0:00.02 -bash
37672 ttys000 0:00.01 bash
$ exit
exit
$ ps
PID TTY TIME CMD
37617 ttys000 0:00.02 -bash
$
Тире указываетоболочка для процесса 37617 была начальной оболочкой входа в систему для окна терминала.Именно так оболочки Unix обнаружили, что они были оболочками входа в систему по крайней мере в 7-й редакции (версии 7) UNIX, хотя это не обязательно было четко задокументировано.