Не -процесс оболочки не имеет переменных оболочки. Программа на C имеет переменные C, программа awk
имеет переменные awk
, программа Perl имеет переменные Perl и т. д., и все они по-своему сильно отличаются от переменных оболочки.
Причина, по которой другой процесс не имеет переменных оболочки (или получает доступ к переменным оболочки ), заключается в том, что переменные оболочки не экспортируются (, т.е. они не являются переменными среды ), а также потому, что некоторые оболочки позволяют для присоединения к переменной оболочки больше информации, чем просто строковое значение,такие как атрибуты для переменных только для чтения -, целочисленных -только переменных и т. д. Эти атрибуты типа (см. typeset
, встроенные -в команду ), не могут применяться к переменной среды и использоваться в другом процессе.
Некоторые оболочки (, такие как bash
), также поддерживают массивы и ассоциативные массивы. Эти структуры слишком сложны для простого формата пары ключ -значение, где и ключ (, и имя переменной ), и значение представляют собой простые текстовые строки, наложенные на переменные среды, что означает, что они не могут быть экспортируется для использования в общем другом процессе.
Все процессы имеют доступ к переменным среды, унаследованным от их родительских процессов. В зависимости от языка у программы есть разные способы доступа к ним.
Программа на C может использовать getenv()
, программа awk
может использовать свой ассоциативный массив ENVIRON
, а программа Perl может использовать свой хэш %ENV
для доступа, например, к переменным среды.
Я не знаю gedit
, но в vim
вы можете получить доступ к переменным среды с помощью оболочки -, похожей на синтаксис:
:echo $HOME
например. Здесь echo
не имеет ничего общего с echo
в оболочке, просто он работает похожим образом. Кроме того, строка $HOME
просто является способом, которым vim
предоставляет пользователю переменные среды.
Поскольку я сам заинтересован в этом, я нашел этот проект до сих пор, но не смог взглянуть на него дальшеhttps://github.com/rocky/pygtk3-pstree. Он кажется мертвым, но, возможно, его можно -перенастроить на что-то новое.