Aslında, soruya şu anki kısa cevap , bazı uygulamaların yolu kodlaması nedeniyle yapamazsınız . Bununla birlikte, özellikle XDG dizinlerini desteklemeyen birçok uygulama, ortam değişkenleri aracılığıyla diğer dizinleri ayarlamayı sağlar. Bir zamanlar, örneğin kabuk ile sistem çapında yapılandırmayı değiştirebilmeniz gerekir, ancak çoğu zaman adımı ayrıcalıklı bir kullanıcı olarak gerçekleştirebilmelisiniz.
Kabuğunuzu ayarlama
# 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
'
Etkileşimli kabuk için zsh, ancak komut dosyası oluşturmak için başka bir kabuk kullanıyorsanız, $XDG_CONFIG_HOME/profile
ilgili kabuk başlatma komut dosyasında kaynak yapacağınızı dosyalamak isteyebilirsiniz .
Ortam değişkenlerini ayarlama
# 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"
Geçici çözüm
SSH
SSH, istemci yapılandırma dosyasını değiştirmek için bir yol sağlar, ancak - bulduğum kadarıyla - yalnızca komut satırı aracılığıyla. Bu nedenle, istemcileri her zaman varsayılan bir yerleştirme olmadan çağırmak için bir çözüm olabilir:
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"
Ve sizin ${XDG_CONFIG_HOME}/ssh/config
gibi bir şey içermelidir:
Host *
IdentityFile /home/user/.config/ssh/id_dsa
Henüz çalışmayan
GNUPGHOME
Belgelendirilmiş bir değişken olmasına rağmen , Fedora 21 altında ~/.gnupg
yeni bir oturum başlattığınızda yeni bir dizin oluşturacaksınız.
ICEauthority
Belgelendirilmiş bir değişken olmasına rağmen , Fedora 21 altında yeni bir oturum başlattığınızda yeni bir çerez oluşturursunuz.
Her ikisinin de dizinleri olduğundan , dotfile ~/.swt
içeriği muhtemelen doğrudan içine kaydedilmelidir . Mümkünse bunun nasıl yapılacağı hakkında hiçbir belge bulunamadı.${XDG_DATA_HOME}
lib
Mozilla ürünleri, uygun bir ortam değişkenini desteklemelidir görmez özel kullanıcı yapılandırma dizini kullanmasına izin vermez Mozilla ürünlerini ve Freedesktop.org XDG Base Directory Şartname Destek .
Diğer faydalı kaynaklar