printf %s\\n "$-"
Répertorie les options de lettre unique dans une seule chaîne.
Ce paramètre peut également être utilisé comme:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Pour désactiver d' -f
abord l'expansion du nom de fichier du shell tout en enregistrant simultanément une valeur pour $-
- le cas échéant - dans $1
. Ensuite, aucun glob ne se produit et la dernière +f
expansion du nom de fichier est à nouveau activée, et peut-être également désactivée.
Par exemple, si l' -f
extension de nom de fichier était déjà désactivée lors de la $-
première sauvegarde de la valeur de , sa valeur enregistrée serait (au moins) :
f
Et donc quand il set
est exécuté à nouveau, cela revient à:
set +f -f
Ce qui vous ramène là où vous avez commencé.
set +o
Répertoriera toutes set
les options du shell de table (voir la réponse de Jason pour le shopt
pouvoir - est-ce un mot? - options) sous une forme qui est sûre pour la rentrée du shell. De cette façon, vous pouvez également faire:
state=$(set +o)
set -some -crazy -options
eval "$state"
Pour enregistrer, modifier et restaurer respectivement l'état des options du shell.
Pour gérer les shopt
ions et set
les options de table en une seule fois:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
Vous pouvez également appeler set
sans aucun argument pour ajouter une liste de toutes les variables actuellement définies du shell - également citées pour la réentrée dans le shell. Et vous pouvez - en bash - en plus ajouter la commande typeset -fp
pour inclure également toutes les fonctions shell actuellement déclarées. Vous pouvez tout regrouper et eval
quand vous êtes prêt. Vous pouvez même appeler alias
sans arguments pour plus de la même chose. Cela ... pourrait le couvrir, cependant. Je suppose qu'il y a "$@"
- que vous devez d'abord mettre dans un bash
tableau, je suppose, avant de le faire set
.
Non, il y en a aussi trap
. Celui-ci est un peu drôle. Habituellement:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... affichera simplement ceci est mon sous - shell parce que le sous-shell est un nouveau processus et obtient son propre ensemble de trap
s - et n'hérite donc pas de trap
s mais de ceux que son parent a explicitement ignorés - (comme trap '' INT
) .
Toutefois:
trap 'echo this is my trap' 0
save_traps=$(trap)
trap
se comporte spécialement lorsqu'il s'agit de la première et seule commande exécutée dans un sous-shell de substitution de commandes en ce sens qu'il reproduira une liste des shell parents actuellement définis traps
dans un format qui est cité pour une rentrée en toute sécurité dans le shell. Et donc vous pouvez faire le save_traps
, puis set
sans arguments - et tout le reste déjà mentionné - pour obtenir à peu près un verrou sur tous les états du shell. Cependant, vous souhaiterez peut-être ajouter export -p
et readonly -p
restaurer explicitement les attributs var var du shell d'origine.
Bref, ça suffit.
set +o
etshopt
? (quant àshopt
pouvoir être un mot,settable
est utilisé dans la page de manuel, donc çashoptable
marche pour moi)shopt
ions, c'eststate=$(set +o;shopt -p)
Depuis la
man
page:imprimera une liste de toutes les options activées.
la source
set
etshopt
?set
c'est beaucoup plus complet: voir l'entrée de la page de manuel .shopt <option>
huponexit
). moyen simple de réparer estshopt | grep on$
Pour répertorier toutes les options:
Pour inspecter une option spécifique:
Prenez l'option
verbose
comme exemple:la source
Options?: Il y a trois groupes d'options dans bash.
Les options lues ou définies par la commande
set
.(Utiliser cette commande pour le manuel:
LESS=+/'set \[--abefhkmnptuvxBCEHPT\]' man bash
)Toutes les options d' une lettre:
abefhkmnptuvxBCEHPT
Aussi les options (qui n'ont pas d'équivalent d'une seule lettre):
Les options lues ou définies par la commande
shopt
.(Lire le manuel avec cette commande:
LESS=+/'shopt \[-pqsu\]' man bash'
)La liste est assez longue , mais facile à imprimer, utilisez:
ou similaire (mais pas égal):
Les options qui pourraient être définies sur INVOCATION
(commande pour le manuel:
LESS=+/'^INVOCATION' man bash
)Toutes les
set
options:Toutes les
shopt
optionsQuelques options qui n'ont de sens que lorsque INVOKING bash:
Et aussi (options longues):
Toutes les
set
options d'une lettre et-ri
sont imprimées avec$-
.Par exemple:
L'appel de bash en tant que shell de connexion n'est signalé qu'avec shopt:
Ainsi:
L'option
-n
ne peut être testée par aucun code, car elle signifie: n'exécutez aucun code.Options d'impression
Le meilleur outil pour répertorier les options du shell en cours d'exécution , soit celles définies avec
set
ou celles définies avecshopt
est le mêmeshopt
. Pour répertorier les options définies:Qui agit exactement comme
set -o
. Utilisezshopt -po
pour obtenir le même résultat queset +o
.Pour répertorier les options de shopt:
Dont vous pouvez choisir d'imprimer celles définies
shopt -ps
ou nonshopt -pu
Pour obtenir toutes les options. Autant que possible, autant d'options longues et certaines (
-sDc
) sur INVOCATION ne peuvent pas être imprimées:Pour les stocker dans une variable:
Et la variable pourrait être utilisée pour reculer toutes les options:
la source
Pour inspecter une option spécifique:
la source