Qual método o shell de login usa para ler / etc / profile?

2

Qual método o shell de login usa para ler /etc/profile ?

    
por Ms.Sahin 14.05.2017 / 15:30

2 respostas

10

É originado. A diferença entre execução e terceirização é explicada em este post . A diferença importante aqui é que o sourcing faz com que os comandos no arquivo originado sejam executados no shell atual. Isso significa que qualquer variável definida no arquivo estará disponível no shell. Para ilustrar a diferença, tente o seguinte:

$ cat foo        ## a simple file with a variable definition
var="hello"
$ chmod +x foo   ## make file executable
$ ./foo          ## execute
$ echo "$var"    ## var is not set in the parent shell

$ . foo          ## source
$ echo "$var"    ## var is now set in the parent shell
hello

Portanto, como /etc/profile precisa ser capaz de afetar o shell do qual foi lido, ele é originado e não é executado.

    
por 14.05.2017 / 15:49
4

O shell cria esses arquivos.

Fazê-lo em um processo filho significaria que o shell não teria as variáveis etc. definidas em seu próprio ambiente, como seriam definidas no ambiente do processo filho (elas são separadas). Um processo filho não pode passar seu ambiente de volta para o pai.

Veja também: Como fazer uma variável de um subshell disponível no shell pai

    
por 14.05.2017 / 15:50