Normalmente, não, o terminal não passa nenhuma opção para bash
. O bash
, no entanto, assume um conjunto de opções padrão dependendo de como ele foi chamado. De man bash
, seção INVOCATION
:
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.
Um shell interativo ativa ainda outras opções.
Além disso, alguns padrões se aplicam com base no nome da chamada ( sh
vs bash
). Lendo em (seção sobre set
):
-h Remember the location of commands as they are looked up
for execution. This is enabled by default.
-m Monitor mode. Job control is enabled. This option is
on by default for interactive shells on systems that
support it (see JOB CONTROL above)
-B The shell performs brace expansion (see Brace Expansion
above). This is on by default.
-H Enable ! style history substitution. This option is on
by default when the shell is interactive.
Combinado, basta invocar bash
em um terminal para ativar essas opções.
Você pode confirmar isso verificando o valor da variável $-
special:
$ echo $-
himBH
Uma opção adicional que talvez seja definida é se o seu terminal estiver configurado para iniciar os shells de login. Nesse caso, -l
é explicitamente passado pelo terminal como uma opção.