Apa itu "s" di dalam "$ -"?

10

Saya biasanya sangat menyadari isi $-. Pada CentOS terbaru saya mendapatkan:

[grochmal@orion ~]$ echo $-
himBH

hmBHsemua opsi dari set, dan iberarti bahwa shell saya bersifat interaktif.

Namun, di Arch Linux saya mendapat:

[grochmal@haps ~]$ echo $-
himBHs

Saya tidak dapat menemukan sesuatu yang berguna man bashdan set -smemberi saya kesalahan. Apa artinya itu s?

grochmal
sumber

Jawaban:

13

The -spilihan adalah bash awal panggilan dengan -s, yang berarti "sumber perintah dari 'dalam standar' Dari manual.:

-s Jika opsi -s hadir, atau jika tidak ada argumen yang tersisa setelah pemrosesan opsi, maka perintah dibaca dari input standar. Opsi ini memungkinkan parameter posisi diatur ketika menjalankan shell interaktif.

Sangat mudah untuk diuji:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Memulai shell baru untuk semua versi bash sebelumnya tidak menetapkan opsi itu secara default:

$ b32sh -li
$ echo $-
himBH

Tetapi dalam bash 4.4:

$ b44sh -li
$ echo $-
himBHs
Ishak
sumber
Dan bagian kedua menjelaskan mengapa saya mendapatkannya di Arch. Nilai CentOS saya BASH_VERSIONadalah 4.2.46 (1) -release sementara di Arch is 4.4.5 (1) -release.
grochmal