Che cos'è una "s" all'interno di "$ -"?


10

Normalmente sono a conoscenza del contenuto di $-. Su un recente CentOS ottengo:

[grochmal@orion ~]$ echo $-
himBH

hmBHsono tutte opzioni da sete isignifica che la mia shell è interattiva.

Eppure, sul mio Arch Linux ho ottenuto:

[grochmal@haps ~]$ echo $-
himBHs

Non riesco a trovare nulla di utile in man bashe set -smi dà un errore. Cosa significa s?

Risposte:


13

L' -sopzione è la chiamata di inizio bash con -s, che significa "comandi sorgente da" standard in ". Dal manuale:

-s Se l'opzione -s è presente o se non rimangono argomenti dopo l'elaborazione dell'opzione, i comandi vengono letti dall'input standard. Questa opzione consente di impostare i parametri posizionali quando si richiama una shell interattiva.

È molto facile testare:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

L'avvio di una nuova shell per tutte le precedenti versioni di bash non imposta questa opzione per impostazione predefinita:

$ b32sh -li
$ echo $-
himBH

Ma è in bash 4.4:

$ b44sh -li
$ echo $-
himBHs

E la seconda parte spiega perché l'ho ottenuto su Arch. Il valore di My CentOS per BASH_VERSIONè 4.2.46 (1)-release, mentre su Arch è 4.4.5 (1)-release.
grochmal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.