Wie verstehe ich die Ausgabe von "echo $ -"?

9

Wie kann man die Ausgabe von verstehen echo $-? Es sieht aus wie eine Art Flaggenzeichen. Ich kann keine Ahnung bekommen, wenn ich google.

dcnh35
quelle

Antworten:

14

Sie repräsentieren die Werte der Flags der Shell. Dies wird von POSIX definiert :

-

(Bindestrich.) Erweitert sich auf die aktuellen Optionsflags (die aus einer Buchstabenfolge verketteten Optionsnamen mit einem Buchstaben), wie beim Aufruf, durch den setspeziellen integrierten Befehl oder implizit durch die Shell angegeben.

Das Zsh-Handbuch erwähnt es kurz:

- <S> Flags, die beim Aufruf oder durch die Befehle setoder an die Shell übergeben setoptwerden.

ebenso wie das Bash-Handbuch in der Beschreibung von set:

Die aktuellen Optionen finden Sie unter $-.

Um die Ausgabe von zu verstehen echo $-, müssen Sie die Optionen im Handbuch Ihrer Shell nachschlagen. Zum Beispiel in Bash, echo $-Ausgängen himBHsfür mich, was bedeutet , dass die -h, -m, -Bund -HOptionen aktiviert sind (siehe help setDetails), dass die Shell interaktiv ist ( -i) und von der Standardeingabe lesen ( -s).

Stephen Kitt
quelle
Wie suche ich einen eingebauten Befehl? zum Beispiel man set.
dcnh35
Verwenden Sie "/" zum Suchen. Sie suchen wahrscheinlich eher man bashoder help setwie bereits erwähnt als man set.
Stephen Kitt
Irgendeine Idee, was die cFlagge bedeutet? Ich sehe es eingestellt, wenn sich rsync anmeldet und meine .bashrc ausführt. Das Bash-Handbuch für setwird nicht erwähnt c. Ich führe bash 4.2.46 (2) -release aus.
Andrew Bainbridge
1
@ Andrew spiegelt die -cBefehlszeilenoption wider ; siehe bash -c 'echo $-'.
Stephen Kitt
2

Aus dem Bash-Referenzhandbuch :

setze [+ abefhkmnptuvxBCEHPT] [+ o Optionsname] [arg ...]

Ohne Optionen werden Name und Wert jeder Shell-Variablen in einem Format angezeigt, das als Eingabe zum Festlegen oder Zurücksetzen der aktuell eingestellten Variablen wiederverwendet werden kann.

...

Die Optionen sind standardmäßig deaktiviert, sofern nicht anders angegeben. Wenn Sie + anstelle von - verwenden, werden diese Optionen deaktiviert. Die Optionen können auch als Argumente für einen Aufruf der Shell angegeben werden. Die aktuellen Optionen finden Sie in $ -. Der Rückgabestatus ist immer wahr, es sei denn, eine ungültige Option ist aufgetreten.

Gegenmodus
quelle