Bash: ¿efecto de ejecutar `set -i`?

Bash: ¿efecto de ejecutar `set -i`?

Hoy estaba leyendo la documentación de set, cuando me di cuenta de que mi variable flags ( $-) contenía una bandera no documentada en la página de ayuda ( help set) y enGNU.org: i.
Después de un tiempo logré encontraresta páginaque dice que isignificainteractivo.
Lo primero que intenté entonces, por supuesto, fue apagarlo.
Después de ejecutar set +i, $-ya no contenía un i, pero aparte de eso, aparentemente todo seguía funcionando como siempre.
Del mismo modo, introducir set -iun archivo de script no tuvo ningún efecto aparente al ejecutarlo.

Entonces, mi pregunta: ¿poner set -i/ set +ien un script o ejecutarlo en la línea de comando realmente tiene algún efecto además de modificar la $-variable?

Respuesta1

Aparentemente, la única consecuencia de usar set -io set +ien la línea de comandos una vez que el shell se ha inicializado es cambiar el valor de $-. La -iopción se puede usar de manera significativa solo cuando se invoca bashpara crear un shell, en cuyo caso obligará al shell a ser interactivo.

Un examen rápido de la fuente de bash muestra que las comprobaciones interactivas durante la ejecución se refieren a la variable global interactive, que se establece durante la secuencia de inicialización y luego no se modifica. Solo set [+-]iy $-usa el forced_interactiveglobal. ( interactivese establecerá en verdadero si forced_interactiveestá configurado o de lo contrario como se describe en man bash).

Respuesta2

bash-1.14.7-14 tiene documentación para la opción -i en la página de manual. https://bugzilla.redhat.com/show_bug.cgi?id=1129

   -i        If the -i option is present, the shell is interactive.

Un shell interactivo lee comandos de la entrada del usuario en un tty. Entre otras cosas, dicho shell lee los archivos de inicio durante la activación, muestra un mensaje y habilita el control de trabajos de forma predeterminada. El usuario puede interactuar con el shell. Un shell que ejecuta un script siempre es un shell no interactivo.

Más información aquí:

http://www.tldp.org/LDP/abs/html/intandnonint.html https://unix.stackexchange.com/questions/43385/what-do-you-mean-by-interactive-shell

Adición: Más enlaces

Una muy buena respuesta sobre shells sin inicio de sesión

https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells

El manual de bash sobre shells interactivos

http://www.gnu.org/software/bash/manual/html_node/Interactive-Shell-Behavior.html#Interactive-Shell-Behavior

información relacionada