O i
significa que o shell é interativo.
Isso é descrito em seção de manual , que discute as circunstâncias em que o o shell é interativo:
An interactive shell is one started without non-option arguments and without the
-c
option whose standard input and error are both connected to terminals (as determined byisatty(3)
), or one started with the-i
option.PS1
is set and$-
includesi
ifbash
is interactive, allowing a shell script or a startup file to test this state.
A natureza interativa da casca é determinada durante a inicialização e seus efeitos não mudam durante a vida útil da casca; É por isso que set
não reporta i
como um sinalizador que pode ser alterado. Na versão 4.3 do Bash, set -i
ou set +i
são aceitos, mas não têm nenhum efeito além de alterar o sinalizador forced_interactive
internamente (e esse sinalizador é lido apenas durante a inicialização). Na versão 4.4, eles produzem uma mensagem de erro. Você pode ver os detalhes da manipulação da flag em flags.c
na origem da Bash código.