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
$XDG_CACHE_HOME
export XAUTHORITY="$XDG_CACHE_HOME/Xauthority"
2) Silakan kutip variabel Anda! (lihat (1) sebagai contoh) 3) Untuk sayabash
, saya perlu:export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"}
Saya merekomendasikan untuk berkonsultasi dengan halaman wiki Arch Linux, dukungan Direktori Dasar XDG yang terus diperbarui.
GIT
Saya baru saja pindah
.gitconfig
keXDG_CONFIG_HOME
OSX. Per dokumentasi git-config (tautan dihilangkan karena reputasi).Saya mengatur variabel lingkungan menggunakan instruksi dalam Mengatur variabel lingkungan PATH sistem-lebar di Mavericks . Perhatikan bahwa Anda harus membuat file
XDG_CONFIG_HOME/git/config
sendiri dan jika~/.gitconfig
ada akan diutamakan.VIM
Saya menggunakan artikel Tom Vincent 2011 Vim menghormati XDG dan tampaknya berhasil. Saya tidak yakin dengan jawaban di atas;
VIMDOTDIR
sepertinya tidak menjadi apa-apa.sumber
Zsh melakukan pekerjaan yang sedikit lebih baik daripada bash membiarkan Anda mengacaukan rumah Anda menggunakan
$ZDOTDIR
variabel. Untuk memindahkan zsh, Anda perlu menambahkan yang berikut ke~/.zshenv
file Anda :Jika Anda memiliki hak akses root, Anda bisa menambahkan ini ke
/etc/zsh/zshenv
dan menghindari perlunya dotfile zsh di $ HOME Anda. Dari sini, semua dotfiles zsh Anda yang lain dapat dipindahkan ke~/.config/zsh
, seperti.zshrc
. Saya juga merekomendasikan menambahkan sejarah zsh Anda ke$XDG_DATA_HOME
lokasi:HISTFILE=$XDG_DATA_HOME/zsh/zsh_history
.Beberapa aplikasi akan mencari lokasi XDG secara default dan Anda mungkin tidak menyadarinya karena Anda masih memiliki dotfile lawas di direktori $ HOME Anda. Git adalah contoh yang bagus untuk ini - jika Anda punya
~/.gitconfig
, coba pindahkan ke~/.config/git/config
. Favorit pribadi saya, Fish Shell , menggunakan ~ / .config secara default juga.Selain itu, periksa aplikasi Anda yang lain untuk versi mereka sendiri dari variabel pengembalian RUMAH. Banyak yang mendukungnya XDG melalui variabel:
export ATOM_HOME=$XDG_CONFIG_HOME/atom
export LPASS_HOME=$XDG_CONFIG_HOME/lpass
export _Z_DATA=$XDG_DATA_HOME/z/z.txt
Tapi masih ada tembok rasa malu XDG yang cukup luas. Tmux telah secara aktif memusuhi mendukung de-cluttering $ HOME Anda. Sama dengan pylint . Dan Julia . Dan daftarnya berlanjut. Arch menyimpan daftar dukungan XDG yang bagus di sini .
Jujur, saya tidak bisa memahami perlawanan untuk mendukungnya. Pengguna perlu mengirim pesan yang jelas bahwa aplikasi tidak boleh berjalan kasar di atas $ HOME. Itu tidak baik lagi. Sebuah sistem modern menggunakan ratusan aplikasi yang mencemari $ HOME, bukan puluhan seperti dulu 20 tahun yang lalu.
sumber