printf %s\\n "$-"
Enumerará las opciones de letra única en una sola cadena.
Ese parámetro también se puede usar como:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Para deshabilitar -f
primero la expansión de nombre de archivo de shell al mismo tiempo que guarda un valor para $-
, si lo hay, en $1
. A continuación, no se producen globs, y la última +f
expansión de ilename vuelve a estar habilitada y posiblemente también deshabilitada.
Por ejemplo, si la -f
expansión de nombre de archivo ya estaba deshabilitada cuando $-
se guardó por primera vez el valor , entonces su valor guardado sería (al menos) :
f
Y así, cuando set
se ejecuta de nuevo, funciona para:
set +f -f
Lo que simplemente te devuelve a donde empezaste.
set +o
Enumerará todas set
las opciones de shell de la tabla (consulte la respuesta de Jason para las shopt
opciones de ¿es una palabra?) En una forma segura para el reingreso de shell. De esa manera, también puedes hacer:
state=$(set +o)
set -some -crazy -options
eval "$state"
Para guardar, cambiar y restaurar el estado de las opciones de shell respectivamente.
Para manejar shopt
iones y set
opciones de tabla de una vez:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
También puede llamar set
sin ningún argumento para agregar una lista de todas las variables establecidas actualmente en el shell, también citadas para volver a ingresar al shell. Y puede, en bash, agregar adicionalmente el comando typeset -fp
para incluir también todas las funciones de shell declaradas actualmente. Puede agruparlo todo junto y eval
cuando esté listo. Incluso puede llamar alias
sin argumentos para más de lo mismo. Eso ... podría cubrirlo, sin embargo. Supongo que sí "$@"
, lo cual tendrías que poner bash
primero en una matriz, supongo, antes de hacerlo set
.
No, también hay trap
. Este es un poco divertido. Generalmente:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... solo imprimirá esta es mi subshell porque la subshell es un proceso nuevo y obtiene su propio conjunto de trap
s, por lo que no hereda ninguna trap
s sino aquellas que su padre ha ignorado explícitamente (como trap '' INT
) .
Sin embargo:
trap 'echo this is my trap' 0
save_traps=$(trap)
trap
se comporta especialmente cuando es el primer y único comando ejecutado en un subshell de sustitución de comandos en el sentido de que reproducirá una lista del shell primario actualmente configurado traps
en un formato que se cita para un reingreso seguro al shell. Y para que pueda hacer eso save_traps
, luego set
sin argumentos, y todo el resto ya mencionado, para obtener un bloqueo en todo el estado de shell. Sin embargo, es posible que desee agregar explícitamente export -p
y readonly -p
restaurar los atributos var de shell originales.
De todos modos, eso es suficiente.
set +o
yshopt
? (en cuanto ashopt
ser una palabra,settable
se usa en la página de manual, así queshoptable
funciona para mí)shopt
iones, es decirstate=$(set +o;shopt -p)
De la
man
página:imprimirá una lista de todas las opciones habilitadas.
fuente
set
yshopt
?set
es mucho más extenso: consulte la entrada de la página de manual .shopt <option>
huponexit
). forma sencilla de arreglar esshopt | grep on$
Para enumerar todas las opciones:
Para inspeccionar una opción específica:
Tome la opción
verbose
como ejemplo:fuente
¿Opciones ?: Hay tres grupos de opciones en bash.
Las opciones leídas o establecidas por el comando
set
.(Utilizar este comando para el manual:
LESS=+/'set \[--abefhkmnptuvxBCEHPT\]' man bash
)Todas las opciones de una letra:
abefhkmnptuvxBCEHPT
También las opciones (que no tienen una letra equivalente):
Las opciones leídas o establecidas por el comando
shopt
.(Lea el manual con este comando:
LESS=+/'shopt \[-pqsu\]' man bash'
)La lista es bastante larga pero fácil de imprimir, utilice:
o similar (pero no igual):
Las opciones que se podrían establecer en invocación:
(comandos para el manual:
LESS=+/'^INVOCATION' man bash
)Todas las
set
opciones:Todas las
shopt
opcionesAlgunas opciones que solo son significativas al invocar bash:
Y, también (opciones largas):
Todas las
set
opciones de una letra y-ri
se imprimen con$-
.Por ejemplo:
Llamar a bash como un shell de inicio de sesión solo se informa con shopt:
Así:
La opción
-n
no puede ser probada por ningún código, ya que significa: no ejecute ningún código.Opciones de impresión
La mejor herramienta para enumerar las opciones del shell en ejecución , ya sea las que están configuradas
set
o las que están configuradas,shopt
es la mismashopt
. Para enumerar las opciones establecidas:Que actúa exactamente como
set -o
. Useshopt -po
para obtener el mismo resultado queset +o
.Para enumerar las opciones de compras:
De los cuales puede elegir imprimir los que están configurados
shopt -ps
o noshopt -pu
Para obtener todas las opciones. Tanto como sea posible, muchas opciones largas y algunos (
-sDc
) en INVOCATION no se pueden imprimir:Para almacenarlos en una variable:
Y la variable podría usarse para retrasar todas las opciones:
fuente
Para inspeccionar una opción específica:
fuente