Na interpretação deste fluxograma
Eu descobri que na festa do homem:
Quando o bash é chamado como um shell de login interativo ou como um shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo / etc / profile, se esse arquivo existir.
Indica que os shells de logon interativo são lidos /etc/profile(sem --noprofile)
Além disso, shells não interativos com a opção --loginread/etc/profile
Isso parece deixar alguns possíveis shells de login (nos quais $0começa com a -) que não são interativos (executam um script, talvez tão simples quanto date) podem não ser lidos (fonte) /etc/profile.
Para confirmar ou negar esta ideia:
Primeiro, tentei usar su -l -, que inicia um shell de login com -o caractere primeiro, mas não consigo torná-lo não interativo (e consigo apresentar os testes para sondá-lo).
Chamando algo como
$ bash -c 'date' -bash
Não relata ser um shell de logon (mesmo que o primeiro caractere seja a -).
Tente isto para revelar os detalhes:
$ bash -c 'echo "$0 $- ||$(shopt -p login_shell)||";date' -bash -bash hBc ||shopt -u login_shell|| Fri Aug 19 06:32:31 EDT 2016O
$0tem um-como o primeiro caractere, não hái(interativo) no valor de,$-mas não é relatado como umlogin_shell(o -u). Nesse caso, o / etc / profile não foi lido, mas não tenho certeza se este é o teste certo.
Há também a menção de "conchas de login não interativas raras" nesta resposta sem ser suficientemente específico para esta pergunta.
A conclusão desse cara é que /etc/profileé sempre lida.
Leia a tabela de resumo: os shells de login interativos e não interativos são lidos /etc/profile
E, se os exemplos desta página estiverem corretos:
Some examples
$ su bob # interactive non-login shell
$ su - bob # interactive login shell
$ exec su - bob # interactive login shell
$ exec su - bob -c 'env' # non-interactive login shell
$ ssh bob@example.com # interactive login shell, `~/.profile`
$ ssh bob@example.com env # non-interactive non-login shell, `~/.bashrc`
O teste dos exec su - bob -c 'env'relatórios que /etc/profileforam lidos.
Em resumo:
É possível ter um shell de logon não interativo (não chamado com --login ou -l)?
E se for verdade, está lendo o /etc/profilearquivo?
Se o exposto acima for verdade, temos que concluir que TODAS as conchas de login [interativas (ou não)] leem / etc / profile (sem --noprofileopção).
Nota: para detectar que o / etc / profile está sendo lido, basta adicionar no início do arquivo este comando:
echo "'/etc/profile' is being read"

--loginopção Para o segundo, se euexec -a "-bash" "bash" <<<"shopt -p login_shell; echo $0 $-"obtiver (codificado em C qoutes)$'/etc/profile read\nshopt -s login_shell\nbash himBH', é um login, mas é interativo. Precisamos de login e não interativos . O que é que estou perdendo?