Que arquivo é carregado e executado por um shell não-interativo não-interativo?

1

Um shell interativo não-login (por exemplo: quando eu abro uma janela do Terminal no Ubuntu) carrega e executa o arquivo ~/.bashrc .

Agora, quando eu executar um script de shell, será criado um processo de shell não-interativo não-interativo que executará este script de shell.

Existe um arquivo que é carregado e executado por este shell não-interativo não-interativo?

Editar: O shell que estou usando é bash .

    
por Tom 24.09.2017 / 13:15

2 respostas

1

Quando você executa algum script de shell com um shell não-interativo não-interativo, especialmente usando sistema (3) em algum programa C (ou executando-o a partir de crontab (5) ), nenhum arquivo é carregado implicitamente.

Seu script pode gerar algum arquivo usando . ou source shell construído .

Talvez você devesse se preocupar com qual ambiente (consulte environ (7) ) ou quais descritores de arquivos são relevantes, e isso depende de como seu script de shell é iniciado, quais são os processos ancestrais, etc. você executa seu script a partir de um shell em uma janela de terminal, ele herda muitas coisas do seu shell (notavelmente seu $PATH ). No entanto, se você executar esse script de forma diferente (em algum script init ou systemd, através de cron ou batch ou nohup , ....) as coisas podem ser diferentes.

Veja também daemon (3) , tty(4) ....

Leia garfo (2) , execve(2) (ambos são usados no seu shell), credenciais (7)

Leia o capítulo em arquivos de inicialização Bash .

    
por 24.09.2017 / 13:19
1

A partir de man bash , em um shell não interativo , a variável de ambiente BASH_ENV é avaliada e seu conteúdo é originado. Portanto, você poderia usar essa variável de ambiente para especificar um arquivo com suas configurações de ambiente.
Por padrão, nenhum arquivo será originado no modo não interativo .

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV
in  the  environment, expands its value if it appears there, and uses the expanded value as the name of a file 
to read and execute.  Bash behaves as if the following command were executed:
       if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the filename.
    
por 24.09.2017 / 13:44