2010-07-27 3 views

ответ

17

Приводя this source,

Стандартные UNIX переменные разделены на переменных две категории, переменные окружения и оболочки. В широком смысле переменные оболочки применяются только к текущему экземпляру оболочки и являются , используемыми для установки краткосрочных рабочих условий ; переменные окружения имеют более значимое значение, и те, которые установлены при входе в систему, действительны для продолжительности сеанса. По значению переменные окружения имеют . Верхние переменные CASE и оболочки имеют имена нижних регистров.

Чтобы перечислить все переменные среды, используйте printenv и перечислите все переменные оболочки, используйте set.

Вы заметите, что переменные среды хранения более постоянное значение, например:

HOME=/home/adam 

Какие изменения довольно редко, в то время как переменные оболочки хранит локальные временные, оболочки конкретные значения, например:

PWD=/tmp 

который изменяется при каждом изменении текущего каталога.

Для большинства практических задач задайте значения среды, добавив export VARIABLE_NAME=VALUE в файл ~/.bashrc.

+0

переменная окружения являются опред.польз.имя? & переменная оболочки s определяет систему? Также вы упомянули команды, а не местоположение i означает, где находится переменная? – sunil

+0

Что вы подразумеваете под «Где находятся переменные»? Где вы устанавливаете их значение или где (технически) хранится в памяти компьютера? –

+0

любой файл находится там, где они хранятся && они определены пользователем или предопределено – sunil

-1

Переменная оболочки - это особый случай переменной окружения. оболочка переменные наследуются из среды и, возможно, скопированы в среду детей оболочки в зависимости от синтаксиса, используемой: http://www.pixelbeat.org/docs/env.html

+2

Неправильное использование. В основном вы меняете условия. Очевидно, есть много путаницы в этой теме, даже ветеранскими пользователями и разработчиком coreutils? : -/ – deltaray

+1

Я не думаю, что я изменил условия. Я подразумевал, что список окружения является более фундаментальным и присутствует для всех процессов, включая оболочки. переменные оболочки - это особый случай, который инициализируется _from_ в списке окружения – pixelbeat

9

Их разница подобна разнице между частными полями и защищенными полей в классе Java.

Закрытые поля класса Java доступны только из этого класса Java. Защищенные поля класса Java доступны как из этого класса Java, так и из его подклассов.

Переменные оболочки оболочки доступны только из этого процесса оболочки. Переменные среды, экспортируемые из этой оболочки, доступны как из этого процесса оболочки, так и из подпроцессов, созданных из этой оболочки.

2

Для оболочки Bash:

Переменные оболочки отличаются от переменных среды по-разному:

♦ Переменная оболочка является специфичным для самой оболочки и не наследуется дочерними процессами.Например, предположу, что вы запускаете другое приложение из оболочки, что приложение не будет наследовать переменные оболочки:

$ SHELL_VAR=xyz 
$ firefox 

SHELL_VAR не будет доступен в среде ребенка процесса (FireFox).

♦ В отличие от переменных окружения родительского процесса (оболочка здесь) наследуются всеми дочерними процессами:

$ export SHELL_VAR=xyz 
$ firefox 

♦ Обе оболочки и переменные окружения являются локальными для оболочки/процесса, который определил их:

Переменные окружения может быть постоянным, тогда как для переменных оболочки после выхода из сеанса они все исчезли.

Примечание: приведенные выше примеры только изменяют оболочку, над которой вы работаете, другими словами, если вы выходите из системы или запускаете новую оболочку/терминал, вы не увидите переменные, которые вы определили, это за Принцип определения местоположения процесса.


Как сделать переменные presistent оболочки:

Один из способов сделать это путем изменения ~/.profile файл:

export SHELL_VAR=xyz 

Этот параметр является для конкретного пользователя и не для всей системы, для общесистемных переменных среды вы можете добавить указанную выше строку в файл .sh в /etc/profile.d

Я настоятельно рекомендую прочитать эту страницу: EnvironmentVariables

Смежные вопросы