То, сколько времени имеет GNU, уничтожают (1), приняло аргумент имени?

Я, вероятно, записал бы некоторый сценарий для расширения переменных оболочки для генерации выходного файла конфигурации.

Вот некоторые подсказки:

  1. здесь-строки (<<<) расширены
  2. можно загрузить переменные ". varaibles.conf"
  3. env -i script.sh запустит скрипт в чистой среде (никакие дополнительные переменные)

Таким образом, сценарий должен будет создать новый временный сценарий, который получит переменные и здесь-строку кошки с расширенным Варом. Затем для получения окончательного результата необходимо будет запустить тот временный сгенерированный скрипт через env -i.

2
29.11.2011, 00:48
1 ответ

Можно просмотреть источник Гну coreutils на Savannah (или клонировать репозиторий на машине), и в особенности посмотрите на источник и журнал изменений kill утилита. Нет и никогда не была такая функция.

do {
      intmax_t n = (errno = 0, strtoimax (arg, &endp, 10));
      …
      if (errno == ERANGE || pid != n || arg == endp || *endp)
        {
          error (0, 0, _("%s: invalid process id"), arg);
          status = EXIT_FAILURE;
        }
      …
} while ((arg = *++argv));

Страница справочника, с которой Вы связываетесь, для kill команда от набора util-linux. Как Вы видите с даты страницы справочника, эта функция очень стара. Много систем Linux поставлются kill команда от GNU coreutils или та от procps пакета, и большую часть времени Вы будете видеть свою встроенную оболочку, а не внешняя команда так или иначе. Ни один из них не позволяет Вам передавать пустое название команды как аргумент.

На связанной ноте, в ударе, ksh и zsh, можно передать любую спецификацию задания как аргумент kill. Спецификации задания запускаются с a % и может сопровождаться числом задания или частью названия команды того задания.

$ jobs
[3] +  Running                 sleep 9999 &
[2] - Stopped                  vim foo
[1]    Running                 xterm &
$ kill %sleep
[3] + Terminated               sleep 9999 &
$ jobs
[2] + Stopped                  vim foo
[1] -  Running                 xterm &
8
27.01.2020, 21:51
  • 1
    Что произошло, вот то, что кто-то использовал sudo kill java когда он означал делать sudo killjava (где killjava локальный сценарий). Sudo обошел встроенную оболочку, и я пытался выяснить почему /bin/kill ведший себя по-другому. Я удивлен, но рад, чтобы обнаружить, что GNU не был преступником на этот раз. –  kojiro 29.11.2011, 01:23

Теги

Похожие вопросы