Что такое «s» внутри «$ -»?

Обычно я хорошо знаю содержимое $-. В недавнем CentOS я получаю:

[[email protected] ~]$ echo $-
himBH

hmBH - все параметры из set и i означает, что моя оболочка интерактивна.

Тем не менее, на моей Arch Linux я получил:

[[email protected] ~]$ echo $-
himBHs

Я не могу найти ничего полезного в man bash и set -s дает мне ошибку. Что означает s?

10 голосов | спросил grochmal 12 MonEurope/Moscow2016-12-12T01:39:36+03:00Europe/Moscow12bEurope/MoscowMon, 12 Dec 2016 01:39:36 +0300 2016, 01:39:36

1 ответ


13

Параметр -s является стартовым вызовом bash с помощью -s, что означает «исходные команды из стандартного в». Из руководства:

  

-s   Если присутствует опция -s или нет аргументов после обработки параметров, тогда команды считываются со стандартного ввода. Эта опция позволяет устанавливать позиционные параметры при вызове интерактивной оболочки.

Очень легко проверить:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Запуск новой оболочки для всех предыдущих версий bash не устанавливает эту опцию по умолчанию:

$ b32sh -li
$ echo $-
himBH

Но это в bash 4.4:

$ b44sh -li
$ echo $-
himBHs
ответил sorontar 12 MonEurope/Moscow2016-12-12T02:02:21+03:00Europe/Moscow12bEurope/MoscowMon, 12 Dec 2016 02:02:21 +0300 2016, 02:02:21

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132