Що таке "s" всередині "$ -"?


10

Я, як правило, добре знаю вміст $-. На останньому CentOS я отримую:

[grochmal@orion ~]$ echo $-
himBH

hmBH- це всі варіанти set, і це iозначає, що моя оболонка є інтерактивною.

Тим не менш, в моєму Arch Linux я отримав:

[grochmal@haps ~]$ echo $-
himBHs

Я не можу знайти нічого корисного в мені man bashі set -sдає помилку. Що це означає s?

Відповіді:


13

-sВаріант початок Баша виклик з -s, що означає «джерело команду з" стандартних в розділі "Від ручної .:

-s Якщо параметр -s присутній, або якщо аргументи не залишаються після обробки опцій, команди зчитуються зі стандартного вводу. Цей параметр дозволяє встановлювати позиційні параметри при виклику інтерактивної оболонки.

Це дуже просто перевірити:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Запуск нової оболонки для всіх попередніх версій bash не встановлює цю опцію за замовчуванням:

$ b32sh -li
$ echo $-
himBH

Але це в базі 4.4:

$ b44sh -li
$ echo $-
himBHs

А друга частина пояснює, чому я потрапив на Arch. Моє CentOS значення для BASH_VERSION4,2,46 (1) - звільнення, тоді як для Arch це 4,4,5 (1) -випуск.
грочмал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.