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?

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

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♀
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.