Linux -Получить список локальных -Пользовательских -Системных переменных среды отдельно

Вот Perl-решение -, реализованное в awk, оставлено в качестве упражнения:

$ perl -F'-' -lnE 'say $_ unless $seen{join "-", sort @F}++' file
a-b-c
d-a-x‬

Re -вставка разделителя -не требуется в случае, если все элементы являются одиночными символами, но становится важным в противном случае (, чтобы отличить ab-cот a-bc, например ).

1
21.03.2021, 14:28
1 ответ

Я думаю, у вас неправильное представление о том, как работают переменные среды Linux. Переменные среды для работающей оболочки определены только для того экземпляра работающей оболочки. Они не имеют никакого значения или значения вне этого. Если вы измените переменную $PATH в используемой вами оболочке, это изменение повлияет только на этот экземпляр оболочки, а не на другие, которые у вас могут быть запущены.

Когда оболочка запускается и пользователь входит в систему, переменные среды могут быть установлены различными сценариями оболочки, которые могут определять переменные среды по умолчанию для всей системы -или для каждого -пользователя. Для bash,это сценарии, такие как/etc/profile(для всей системы )или ~/.bash_profileили ~/.bashrc(, специфичные для пользователя ). Насколько я знаю, невозможно определить из работающей оболочки, где была установлена ​​конкретная переменная -, вам нужно будет проверить эти файлы.

Еще одна концепция, о которой вам следует знать, это экспорт переменных. Команду exportв bashможно использовать, чтобы указать, какие переменные следует экспортировать в новые подоболочки -, которые может создать работающая оболочка.

Кроме того, имейте в виду, что переменные среды относятся к конкретным программам оболочки, а не являются глобальными для системы Linux. Таким образом, переменные для bash(, которые я использовал в качестве примера ), могут отличаться от используемых в csh(, хотя могут быть некоторые сходства )и/или для них могут быть установлены другие значения по умолчанию.

2
28.04.2021, 22:58

Теги

Похожие вопросы