Действительно, текущий краткий ответ на этот вопрос - вы не можете, так как некоторые приложения жестко задают путь. Тем не менее, многие приложения, которые специально не поддерживают каталоги XDG, позволяют устанавливать другие каталоги через переменные среды. Некоторое время вам нужно иметь возможность изменять общесистемную конфигурацию, например, с помощью оболочки, но большую часть времени вы сможете выполнять этот шаг как непривилегированный пользователь.
Установка вашей оболочки
# Setting bash to use $XDG_CONFIG_HOME/bash ### Moving existing files mkdir -p $XDG_CONFIG_HOME/bash for file in ~/.bash*;do dest=$/bash/$(basename $file|cut -d\. -f2) mv -i "$file" "$dest" # don't overwrite without permission done ### Sourcing and setting variables sudo sh -c 'cat >>/etc/profile.d/bash_in_xdg_config_home.sh <<CONF # Make bash follow the XDG_CONFIG_HOME convention if [ -d "\$XDG_CONFIG_HOME/bash" ] && [ "\$0" = "bash" ] then . "\$/bash/bash_profile" . "\$/bash/bashrc" HISTFILE="\$/bash/bash_history" fi CONF ' sudo sh -c 'cat >>/etc/bash.bash_logout <<CONF if [ -s "\$/bash/bash_logout" ] then . "\$/bash/bash_logout" fi CONF ' # Setting zsh ## System wide configuration (using xdg directories) sudo sh -c 'cat >>/etc/zshenv <<CONF if [[ -z "\$XDG_CONFIG_HOME" ]] then export XDG_CONFIG_HOME="\$HOME/.config" fi if [[ -d "\$XDG_CONFIG_HOME/zsh" ]] then export ZDOTDIR="\$XDG_CONFIG_HOME/zsh" fi CONF '
Если вы используете несколько оболочек, например zsh, для интерактивной оболочки, а другую - для сценариев, вы можете $XDG_CONFIG_HOME/profile
подать файл, который вы будете использовать в соответствующем сценарии инициализации оболочки.
Установка переменных среды
# bazaar export BZRPATH=$XDG_CONFIG_HOME/bazaar export BZR_PLUGIN_PATH=$XDG_DATA_HOME/bazaar export BZR_HOME=$XDG_CACHE_HOME/bazaar # gnupg export GNUPGHOME=$/gnupg # ICEauthority export ICEAUTHORITY=$/ICEauthority # less export LESSHISTFILE="$/less/history" export LESSKEY="$/less/keys" # mplayer export MPLAYER_HOME=$XDG_CONFIG_HOME/mplayer # subversion export SUBVERSION_HOME=$XDG_CONFIG_HOME/subversion # vim export VIMINIT='let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" | source $MYVIMRC' export VIMDOTDIR="$XDG_CONFIG_HOME/vim"
Работа вокруг
SSH
SSH предоставляет способ изменить файл конфигурации клиента, но - насколько я обнаружил - только через командную строку. Таким образом, одно решение всегда вызывать клиентов с отсутствием по умолчанию:
if [ -s "$/ssh/config" ] then SSH_CONFIG="-F $/ssh/config" fi if [ -s "$/ssh/id_dsa" ] then SSH_ID="-i $/ssh/id_dsa" fi alias ssh="ssh $SSH_CONFIG $SSH_ID " alias ssh-copy-id="ssh-copy-id $SSH_ID"
И ваш $/ssh/config
должен содержать что-то вроде:
Host * IdentityFile /home/user/.config/ssh/id_dsa
Что еще не работает
Хотя GNUPGHOME
это задокументированная переменная, в Fedora 21 вы создадите новый ~/.gnupg
каталог при запуске нового сеанса.
Хотя ICEauthority
это задокументированная переменная, в Fedora 21 вы в конечном итоге создадите новый файл cookie при запуске нового сеанса.
~/.swt
Содержимое dotfile, вероятно, должно храниться непосредственно в $
обоих lib
каталогах. Никакой документации не найдено, как это сделать, если это возможно.
Продукты Mozilla не поддерживают соответствующую переменную среды, см. Продукты Mozilla не позволяют использовать пользовательский каталог конфигурации пользователя и Поддержка спецификации базового каталога XDG Freedesktop.org .
Другие полезные источники
- Переместите ваши файлы конфигурации в $ XDG_CONFIG_HOME
- https://github.com/woegjiub/.config/blob/master/bash/xdg.sh
- http://www.reddit.com/r/linux/comments/2v8rv2/move_your_config_files_to_xdg_config_home/ (переместите файлы конфигурации в
$XDG_CONFIG_HOME
) - https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes