XDG_DATA_DIRS содержит повторяющиеся пути; Как исправить?

Точка .и звездочка *в качестве метасимволов регулярных выражений должны быть экранированы, чтобы трактовать их буквально:

Образец входного файла:

$ cat input.txt
ServerAlias *.mysite.com

sed 's/ServerAlias \*\./&xx/' input.txt
ServerAlias *.xxmysite.com
0
25.01.2020, 22:56
4 ответа

Furthermore, my system does not have an /usr/local/share/applications/ Can that path be removed from the $XDG_DATA_DIRS env var

/usr/local/share/applicationsотсутствует среди значений $XDG_DATA_DIRS, которые вы вставили, поэтому нет необходимости удалять несуществующие -

.

Если вы grep -r XDG _ДАННЫЕ _DIRS /usr

, и вы увидите множество вхождений XDG _DATA _DIRS.

I hope that package is not responsible for screwing up my mime type associations...

Нет, это ничего не портит. Он просто ищет и в этих каталогах

In a new user account on a clean Arch install on another device, the following three commands produce no standard output

Точно, в разных системах вы получаете разные значения. Это те пакеты, которые вы устанавливаете, и переменные env, определенные для этого конкретного пользователя, которые определяют каталоги, в которых будут искаться файлы данных. Если одно и то же значение определено дважды, оно будет отображаться дважды. В этом нет ничего странного, потому что иногда пакеты не согласуются друг с другом. grep/usr/, /optи $HOME, и вы точно где-нибудь найдете виновника. Если нет grep /;)

1
28.01.2020, 02:38

Если вы используете оболочку zsh, вы можете добавить в свой~/.zshrc:

typeset -UT XDG_DATA_DIRS xdg_data_dirs

Затем скалярная переменная $XDG_DATA_DIRSбудет Tсвязана с $xdg_data_dirs, что значительно упрощает управление, а элементы становятся Uуникальными с -U.

Затем, чтобы удалить не -существующие компоненты, вы можете добавить:

xdg_data_dirs=($^xdg_data_dirs(N-/))

Что удалит компоненты, которые не являются фактическими каталогами (/, после разрешения символической ссылки(-))

0
28.01.2020, 02:38

Чтобы удалить дубликаты и -не существующие каталоги в bash:

#!/usr/bin/env bash

XDG_DATA_DIRS=/usr/share:/usr/share:/usr/local/share
IFS=: read -ra xdg_data_dirs <<< "$XDG_DATA_DIRS"
declare -p xdg_data_dirs
for d in "${xdg_data_dirs[@]}"; do
    test -d "$d" || continue
    [[ :$result: != *:$d:* ]] || continue
    result+="${result+:}$d"
done
XDG_DATA_DIRS=$result

Вы искали в своем домашнем каталоге?

0
28.01.2020, 02:38

Проверьте /usr/bin/x -менеджер сеанса -и /usr/bin/startxfce4 оба они дублируют /usr/share в XDG _DATA _DIRS.

0
28.08.2020, 14:40

Теги

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