Co to jest „s” wewnątrz „$ -”?


10

Zazwyczaj dobrze wiem o zawartości $-. W ostatnim CentOS otrzymuję:

[grochmal@orion ~]$ echo $-
himBH

hmBHsą wszystkie opcje z seti ioznacza, że ​​moja powłoka jest interaktywna.

Jednak na moim Arch Linux dostałem:

[grochmal@haps ~]$ echo $-
himBHs

Nie mogę znaleźć niczego przydatnego man bashi wyświetla set -smi błąd. Co to soznacza?

Odpowiedzi:


13

-sRozwiązaniem jest wezwanie początek z bash -s, co oznacza „źródło poleceń od«standardowego in»z podręcznika.:

-s Jeśli opcja -s jest obecna lub jeśli po przetworzeniu opcji nie pozostały żadne argumenty, polecenia są odczytywane ze standardowego wejścia. Ta opcja umożliwia ustawienie parametrów pozycyjnych podczas wywoływania powłoki interaktywnej.

Bardzo łatwo jest przetestować:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Uruchomienie nowej powłoki dla wszystkich poprzednich wersji bash nie ustawia domyślnie tej opcji:

$ b32sh -li
$ echo $-
himBH

Ale jest w bash 4.4:

$ b44sh -li
$ echo $-
himBHs

A druga część wyjaśnia, dlaczego dostałem to na Arch. Wartość mojego CentOS dla BASH_VERSIONto 4.2.46 (1) -release, podczas gdy na Arch jest to 4.4.5 (1) -release.
grochmal
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.