Пробел между символом комментария строки '#' и началом фактического комментария в сценариях оболочки

Вариант 1 будет проходить аутентификацию дважды. Один раз с помощью прокси-команды, чтобы установить соединение, и снова с помощью исходной команды ssh. Вы также можете вместо этого сделать вариант 1 просто netcat %h %pи использовать параметры хоста, чтобы выполнить то же самое, что вы хотите от своей команды ssh.

Host target_host
  HostName 172.16.0.1
  LogLevel QUIET
  ForwardX11 no
  ProxyCommand netcat %h %p

Однако даже при этом потребуется pty для поддержки netcat и дополнительный процесс как часть соединения.

Вариант 2 делает то же самое, что и netcat, но внутренне и не выделяет pty, хотя это можно переопределить, чтобы он был точно таким же, как вариант 1, если это необходимо. Это также предотвращает любые настройки на Jumphost, такие как переадресация агента.

Варианты 1 и 2 используют ProxyCommand, который используется как общий способ автоматизации установки соединения. В основном эти варианты существуют, потому что ProxyJump существовал только после него. Но ProxyCommand можно использовать для более сложных действий с настройкой соединения. В документации приводятся примеры его использования для настройки прокси-серверов HTTP CONNECT для переадресации вашего соединения.

Вариант 3 использует ProxyJump, который по сути является встроенным TCP-прокси и больше всего похож на Вариант 2, но допускает более простое и строгое управление цепочкой.Без него то же самое выглядело бы так:

Host jumphost2
  ProxyCommand ssh -W %h:%p jumphost1
Host server
  ProxyCommand ssh -W %h:%p jumphost2

Но с ProxyJump это выглядело бы так:

Host server
  ProxyJump jumphost2,jumphost1
2
15.01.2020, 16:10
3 ответа

Не -стилистических различий нет; POSIX указывает , что при распознавании токенов в оболочке

If the current character is a '#', it and all subsequent characters up to, but excluding, the next <newline> shall be discarded as a comment. The <newline> that ends the line is not considered part of the comment.

4
27.01.2020, 21:53

Я не знаю ни одной оболочки, в которой пробел имел бы значение. Например, в man bashговорится:

   In a non-interactive shell, or an interactive shell in which
   the interactive_comments option to the shopt builtin is enabled
   (see SHELL BUILTIN COMMANDS below), a word beginning with #
   causes that word and all remaining characters on that line to
   be ignored.

В частности, сказано, что все символы после #игнорируются.

Лично я предпочитаю ставить пробел после #.

3
27.01.2020, 21:53

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

0
27.01.2020, 21:53

Теги

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