Was ist ein "s" in "$ -"?

10

Normalerweise kenne ich den Inhalt von $-. Auf einem aktuellen CentOS bekomme ich:

[grochmal@orion ~]$ echo $-
himBH

hmBHsind alle Optionen von setund ibedeutet, dass meine Shell interaktiv ist.

Auf meinem Arch Linux habe ich jedoch:

[grochmal@haps ~]$ echo $-
himBHs

Ich kann nichts Nützliches finden man bashund set -sgebe mir einen Fehler. Wofür steht das s?

gro♀
quelle

Antworten:

13

Die -sOption ist der Bash-Start-Aufruf mit -s, was "Quellbefehle von" Standard in "bedeutet. Aus dem Handbuch:

-s Wenn die Option -s vorhanden ist oder nach der Optionsverarbeitung keine Argumente mehr vorhanden sind, werden Befehle aus der Standardeingabe gelesen. Mit dieser Option können die Positionsparameter beim Aufrufen einer interaktiven Shell festgelegt werden.

Es ist sehr einfach zu testen:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Das Starten einer neuen Shell für alle vorherigen Bash-Versionen setzt diese Option nicht standardmäßig fest:

$ b32sh -li
$ echo $-
himBH

Aber es ist in Bash 4.4:

$ b44sh -li
$ echo $-
himBHs
Sorontar
quelle
Und der zweite Teil erklärt, warum ich das auf Arch bekommen habe. Mein CentOS-Wert für BASH_VERSIONist 4.2.46 (1) -Veröffentlichung, während es auf Arch 4.4.5 (1) -Veröffentlichung ist.
gro♀