Опции exec: что является нулевым аргументом для команды? - PullRequest
1 голос
/ 10 мая 2011
help exec

указывает на эту опцию для исполнения

-a name   pass NAME as the zeroth argument to COMMAND

Что такое нулевой аргумент команды?

-l                place a dash in the zeroth argument to COMMAND

Что означает размещение тире в нулевом аргументе?

Ответы [ 3 ]

1 голос
/ 10 мая 2011

Это имя используется для вызова скрипта.

При запуске из командной строки его можно изменить, вызвав скрипт по ссылке.

0 голосов
/ 10 мая 2011

Как вам сказали, нулевой аргумент - это то, что появляется в 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, хотя это не обязательно было четко задокументировано.

0 голосов
/ 10 мая 2011

В Mac OS X сравните:

(exec -a foo sh -c 'echo $0')
(exec -l -a foo sh -c 'echo $0')
(exec -l -a foo sh -c 'echo $0' arg0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...