Вот Perl-решение -, реализованное в awk, оставлено в качестве упражнения:
$ perl -F'-' -lnE 'say $_ unless $seen{join "-", sort @F}++' file
a-b-c
d-a-x
Re -вставка разделителя -
не требуется в случае, если все элементы являются одиночными символами, но становится важным в противном случае (, чтобы отличить ab-c
от a-bc
, например ).
Я думаю, у вас неправильное представление о том, как работают переменные среды Linux. Переменные среды для работающей оболочки определены только для того экземпляра работающей оболочки. Они не имеют никакого значения или значения вне этого. Если вы измените переменную $PATH в используемой вами оболочке, это изменение повлияет только на этот экземпляр оболочки, а не на другие, которые у вас могут быть запущены.
Когда оболочка запускается и пользователь входит в систему, переменные среды могут быть установлены различными сценариями оболочки, которые могут определять переменные среды по умолчанию для всей системы -или для каждого -пользователя. Для bash
,это сценарии, такие как/etc/profile
(для всей системы )или ~/.bash_profile
или ~/.bashrc
(, специфичные для пользователя ). Насколько я знаю, невозможно определить из работающей оболочки, где была установлена конкретная переменная -, вам нужно будет проверить эти файлы.
Еще одна концепция, о которой вам следует знать, это экспорт переменных. Команду export
в bash
можно использовать, чтобы указать, какие переменные следует экспортировать в новые подоболочки -, которые может создать работающая оболочка.
Кроме того, имейте в виду, что переменные среды относятся к конкретным программам оболочки, а не являются глобальными для системы Linux. Таким образом, переменные для bash
(, которые я использовал в качестве примера ), могут отличаться от используемых в csh
(, хотя могут быть некоторые сходства )и/или для них могут быть установлены другие значения по умолчанию.