Antworten:
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 übergebensetoptwerden.
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).
man bashoder help setwie bereits erwähnt als man set.
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.
-cBefehlszeilenoption wider ; siehe bash -c 'echo $-'.
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.
man set.