Qual é o parâmetro “i” do comando set no bash shell?

6

Eu procurei o comando shell builtin, digitando help set , e a descrição da sintaxe curta mostra:

set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]

A documentação de ajuda explica que a variável $ - contém todos os parâmetros atuais configurados com o comando set.

Então, eu fiz echo $- para exibir todas as configurações de parâmetro do shell e a minha foi:

himBH

Todas as letras são mencionadas dentro da documentação e a descrição resumida da sintaxe acima, mas falta uma: a opção i . O que significa o parâmetro i set no bash?

    
por sharkant 12.05.2017 / 12:49

1 resposta

10

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 by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash 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.

    
por 12.05.2017 / 12:51