Bash: efeito da execução de `set -i`?

Bash: efeito da execução de `set -i`?

Hoje eu estava lendo a documentação do set, quando percebi que minha variável flags ( $-) continha uma flag não documentada na página de ajuda ( help set) e noGNU.org: i.
Depois de algum tempo consegui encontraresta páginaque afirma que isignificainterativo.
A primeira coisa que tentei, claro, foi desligá-lo.
Depois de executado set +i, $-não continha mais um i, mas fora isso, aparentemente tudo ainda estava funcionando como sempre.
Da mesma forma, inserir set -ium arquivo de script não teve efeito aparente ao executá-lo.

Então, minha pergunta: colocar set -i/ set +iinserir um script ou executá-lo na linha de comando realmente tem algum efeito além de modificar a $-variável?

Responder1

Aparentemente, a única consequência de usar set -iou set +ina linha de comando depois que o shell for inicializado é alterar o valor de $-. A -iopção pode ser usada de forma significativa apenas ao invocar bashpara criar um shell, caso em que forçará o shell a ser interativo.

Um rápido exame da fonte bash mostra que as verificações interativas durante a execução referem-se à variável global interactive, que é definida durante a sequência de inicialização e depois não modificada. Somente set [+-]ie $-use o forced_interactiveglobal. ( interactiveserá definido como verdadeiro se forced_interactiveestiver definido ou conforme descrito em man bash.)

Responder2

bash-1.14.7-14 possui documentação para a opção -i na página de manual. https://bugzilla.redhat.com/show_bug.cgi?id=1129

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

Um shell interativo lê comandos da entrada do usuário em um tty. Entre outras coisas, esse shell lê arquivos de inicialização na ativação, exibe um prompt e ativa o controle de tarefas por padrão. O usuário pode interagir com o shell. Um shell executando um script é sempre um shell não interativo.

Mais informações aqui:

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

Adição: Mais links

Uma resposta realmente boa sobre shells sem login

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

O manual bash sobre shells interativos

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

informação relacionada