Um processo que não é um processo de shell tem variáveis de shell?

0

Um shell (por exemplo: o shell bash) tem o conceito de variáveis de shell e o conceito de variáveis de ambiente.

Mas e os outros processos que não são processos shell (por exemplo: Firefox, gedit, etc.), esses processos também possuem variáveis shell ou eles possuem apenas variáveis de ambiente?

    
por user7681202 25.09.2017 / 10:26

1 resposta

2

Um processo não shell não possui variáveis shell. Um programa C tem variáveis C, um programa awk tem awk variáveis, um programa Perl tem variáveis Perl, etc., e todas elas são muito diferentes das variáveis do shell.

A razão pela qual outro processo não tem variáveis shell (ou acessa variáveis shell) é que variáveis shell não são exportadas (isto é, não são variáveis de ambiente), e também porque alguns shells permitem anexar mais informações a uma variável shell que apenas um valor de string, como atributos para variáveis somente de leitura, variáveis inteiras, etc. Esses atributos de tipo (consulte o comando interno typeset ) não podem ser aplicados a uma variável de ambiente e ser usado em outro processo.

Algumas conchas (como bash ) também suportam matrizes e matrizes associativas. Essas estruturas são muito complexas para o formato de par de valores-chave simples, em que a chave (o nome da variável) e o valor são strings de texto simples, impostas a variáveis de ambiente, o que significa que não podem ser exportadas para uso em um genérico outro processo.

Todos os processos têm acesso às variáveis de ambiente herdadas de seus processos pai. Dependendo da linguagem, existem diferentes maneiras de um programa acessá-las.

Um programa C pode usar getenv() , um programa awk pode usar sua matriz associativa ENVIRON e um programa Perl pode usar seu %ENV hash para acessar variáveis de ambiente, por exemplo.

Eu não sei gedit , mas em vim , você pode acessar variáveis de ambiente com uma sintaxe semelhante a shell:

:echo $HOME

por exemplo. O echo aqui não tem nada a ver com echo no shell, apenas funciona de maneira semelhante. Além disso, a string $HOME é a maneira que o vim expõe as variáveis de ambiente ao usuário.

    
por 25.09.2017 / 10:29