Estou executando o Arch Linux e o KDE e estou curioso para aprender sobre associações de arquivos do tipo mime.
Ao investigar meu sistema, notei este problema:
$ echo $XDG_DATA_DIRS
/usr/share:/usr/share:/usr/local/share
Observe que o caminho /usr/share
está duplicado. Gostaria de saber como resolver isso e como resolver.
Além disso, meu sistema não possui um /usr/local/share/applications/
Pode esse caminho ser removido do $XDG_DATA_DIRS
env var? Se sim, como?
Acredito que o resultado final deve ser:
$ echo $XDG_DATA_DIRS
/usr/share
Aqui estão algumas informações de solução de problemas. Não vejo esses caminhos ao executar como root. Isso não produz saída std:
# echo $XDG_DATA_DIRS
Na minha conta de usuário normal na minha máquina, o comando a seguir não produz uma saída padrão e um valor de retorno de 1
:
$ grep -r XDG_DATA_DIRS /etc/profile.d/
Esta pesquisa não encontra correspondências, exceto no arquivo binário places.sqlite (no perfil do Firefox):
find /home/myuser -mount -type f -exec grep -r XDG_DATA_DIRS= {} +
Isso também não produz saída padrão:
grep -r XDG_DATA_DIRS /etc/
Até agora, a única correspondência que encontrei é esta:
# grep -r XDG_DATA_DIRS= /usr
/usr/share/ECM/kde-modules/prefix.sh.cmake:export XDG_DATA_DIRS=@KDE_INSTALL_FULL_DATADIR@:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}
Então...
pacman -F /usr/share/ECM/kde-modules/prefix.sh.cmake
usr/share/ECM/kde-modules/prefix.sh.cmake is owned by extra/extra-cmake-modules 5.66.0-1
Arch Linux - extra-cmake-modules 5.66.0-1 (qualquer) https://www.archlinux.org/packages/extra/any/extra-cmake-modules/
Espero que esse pacote não seja responsável por estragar minhas associações de tipo mime ...
Em uma nova conta de usuário em uma instalação limpa do Arch em outro dispositivo, os três comandos a seguir não produzem saída padrão:
echo $XDG_DATA_DIRS
grep -r XDG_DATA_DIRS /etc/profile.d/
grep -r XDG_DATA_DIRS= /usr
/usr/local/share/applications
não está nos$XDG_DATA_DIRS
valores que você colou então não há necessidade de remover o inexistenteSe você grep -r XDG_DATA_DIRS /usr
e você verá muitas ocorrências de XDG_DATA_DIRS.
Não, não estraga nada. Ele apenas pesquisa esses diretórios também
Exatamente, você obtém valores diferentes em sistemas diferentes. São esses pacotes que você instala e as variáveis env que são definidas para esse usuário específico, que definiriam os diretórios que serão pesquisados por arquivos de dados. Se o mesmo valor for definido duas vezes, ele aparecerá duas vezes. Não há nada de estranho em ter isso porque às vezes os pacotes não se coordenam.
grep
/usr/
,/opt
e$HOME
você encontrará o culpado em algum lugar com certeza. Se nãogrep /
;)Se você estiver usando o
zsh
shell, poderá adicionar ao seu~/.zshrc
:Então a
$XDG_DATA_DIRS
variável escalar seráT
ligada ao$xdg_data_dirs
que torna muito mais fácil de manipular e os elementos sãoU
exclusivos com-U
.Em seguida, para remover os componentes inexistentes, você pode adicionar:
O que removeria componentes que não são diretórios reais (
/
, após a resolução do link simbólico (-
))Para remover duplicatas e diretórios inexistentes no bash :
Você pesquisou em seu diretório inicial?
Esta é a única solução infalível que encontrei:
Eu coloquei esses comandos no meu
~/.bashrc
arquivoVerifique /usr/bin/x-session-manager e /usr/bin/startxfce4 ambos duplicados /usr/share em XDG_DATA_DIRS.