“$ -” içinde “s” nedir?


10

Normalde içeriğinin farkındayım $-. Yakın zamanda yapılan bir CentOS'ta:

[grochmal@orion ~]$ echo $-
himBH

hmBHtüm seçenekler setve ikabuğumun etkileşimli olduğu anlamına gelir.

Yine de Arch Linux'umda:

[grochmal@haps ~]$ echo $-
himBHs

Yararlı bir şey bulamıyorum man bashve set -sbana bir hata veriyor. Bu ne anlama geliyor s?

Yanıtlar:


13

Bu -sseçenek ile bash start çağrısı -s, yani "standart giriş" den kaynak komutları anlamına gelir.

-s -s seçeneği varsa veya seçenek işlendikten sonra hiçbir bağımsız değişken kalmazsa, komutlar standart girdiden okunur. Bu seçenek, etkileşimli bir kabuk çağrılırken konumsal parametrelerin ayarlanmasını sağlar.

Test etmek çok kolay:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Önceki tüm bash sürümleri için yeni bir kabuk başlatmak, bu seçeneği varsayılan olarak ayarlamaz:

$ b32sh -li
$ echo $-
himBH

Ama bash 4.4'te:

$ b44sh -li
$ echo $-
himBHs

İkinci bölüm bunu neden Arch'a aldığımı açıklıyor. Benim CentOS için BASH_VERSIONdeğeri 4.2.46 (1) -vela, Arch ise 4.4.5 (1) -leva.
grochmal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.