Memang, jawaban singkat saat ini untuk pertanyaan itu adalah Anda tidak bisa , karena beberapa aplikasi membuat hardcode path. Namun demikian, banyak aplikasi yang tidak secara khusus mendukung direktori XDG memungkinkan untuk mengatur direktori lain melalui variabel lingkungan. Beberapa saat Anda harus dapat mengubah konfigurasi sistem yang luas, misalnya dengan shell, tetapi sebagian besar waktu, Anda harus dapat melakukan langkah sebagai pengguna yang tidak memiliki hak.
Pengaturan Anda shell
# Setting bash to use $XDG_CONFIG_HOME/bash, defaults to ~/.config/bash
confdir=${XDG_CONFIG_HOME:-$HOME/.config}/bash
### Moving existing files
mkdir -p -- "$confdir"
for file in "$HOME"/.bash*; do
dest=$confdir/$(basename "${file:1}")
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
_confdir=\${XDG_CONFIG_HOME:-\$HOME/.config}/bash
if [ -d "$_confdir" ] && [ "\$0" = "bash" ]
then
. "\$_confdir"/bash_profile
. "\$_confdir"/bashrc
HISTFILE=\$_confdir/bash_history
fi
unset _confdir
CONF
'
sudo sh -c 'cat >>/etc/bash.bash_logout <<CONF
if [ -s "\${XDG_CONFIG_HOME:-\$HOME/.config}/bash/bash_logout" ]
then
. "\${XDG_CONFIG_HOME:-\$HOME/.config}/bash/bash_logout"
fi
CONF
'
# Setting zsh
## System wide configuration (using xdg directories)
sudo sh -c 'cat >>/etc/zshenv <<CONF
if [[ -d "\${XDG_CONFIG_HOME:-\$HOME/.config}"/zsh ]]
then
export ZDOTDIR=\${XDG_CONFIG_HOME:-\$HOME/.config}/zsh
fi
CONF
'
Jika Anda menggunakan beberapa shell, misalnya zsh untuk shell interaktif, tetapi yang lain untuk scripting, Anda mungkin ingin $XDG_CONFIG_HOME/profile
mengajukan, bahwa Anda akan sumber dalam skrip inisialisasi shell yang relevan.
Mengatur variabel lingkungan
# 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=${XDG_CONFIG_HOME}/gnupg
# ICEauthority
export ICEAUTHORITY=${XDG_CACHE_HOME}/ICEauthority
# less
export LESSHISTFILE="${XDG_CONFIG_HOME}/less/history"
export LESSKEY="${XDG_CONFIG_HOME}/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"
Bekerja di sekitar
SSH
SSH memang menyediakan cara untuk mengubah file konfigurasi klien, tetapi - sejauh yang saya temukan - hanya melalui baris perintah. Jadi satu solusi untuk selalu memohon klien dengan tidak ada penempatan default mungkin:
if [ -s "${XDG_CONFIG_HOME}/ssh/config" ]
then
SSH_CONFIG="-F ${XDG_CONFIG_HOME}/ssh/config"
fi
if [ -s "${XDG_CONFIG_HOME}/ssh/id_dsa" ]
then
SSH_ID="-i ${XDG_CONFIG_HOME}/ssh/id_dsa"
fi
alias ssh="ssh $SSH_CONFIG $SSH_ID "
alias ssh-copy-id="ssh-copy-id $SSH_ID"
Dan Anda ${XDG_CONFIG_HOME}/ssh/config
harus mengandung sesuatu seperti:
Host *
IdentityFile /home/user/.config/ssh/id_dsa
Apa yang belum berhasil
Meskipun GNUPGHOME
merupakan variabel yang terdokumentasi, di bawah Fedora 21 Anda akan berakhir dengan pembuatan ~/.gnupg
direktori baru ketika Anda meluncurkan sesi baru.
Meskipun ICEauthority
merupakan variabel yang terdokumentasi, di bawah Fedora 21 Anda akan berakhir dengan pembuatan cookie baru saat meluncurkan sesi baru.
~/.swt
Konten dotfile mungkin harus disimpan langsung ke dalam ${XDG_DATA_HOME}
, karena keduanya memiliki lib
direktori. Tidak ada dokumentasi yang ditemukan tentang bagaimana melakukannya jika memungkinkan.
Produk Mozilla tidak mendukung variabel lingkungan yang sesuai, lihat Produk Mozilla tidak mengizinkan untuk menggunakan direktori konfigurasi pengguna khusus dan Dukungan untuk Spesifikasi Direktori Dasar XDG Freedesktop.org .
Sumber bermanfaat lainnya