वास्तव में, इस सवाल का वर्तमान संक्षिप्त जवाब आप नहीं कर सकते हैं , क्योंकि कुछ एप्लिकेशन मार्ग को हार्डकोड करते हैं। फिर भी, कई अनुप्रयोग जो विशेष रूप से XDG निर्देशिकाओं का समर्थन नहीं करते हैं, पर्यावरण चर के माध्यम से अन्य निर्देशिकाओं को सेट करने में सक्षम होते हैं। कुछ समय के लिए आपको सिस्टम वाइड कॉन्फ़िगरेशन को बदलने में सक्षम होने की आवश्यकता है, उदाहरण के लिए शेल के साथ, लेकिन अधिकांश समय, आपको एक अनप्रोविले हुए उपयोगकर्ता के रूप में कदम का प्रदर्शन करने में सक्षम होना चाहिए।
आपको खोलकर सेट करना
# 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
'
यदि आप कई शेल का उपयोग करते हैं, उदाहरण के लिए इंटरेक्टिव शेल के लिए, लेकिन स्क्रिप्टिंग के लिए एक अन्य, तो आप $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=${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"
चारों ओर काम करना
SSH
SSH क्लाइंट कॉन्फ़िगरेशन फ़ाइल को बदलने का एक तरीका प्रदान करता है, लेकिन - जहाँ तक मैंने पाया - केवल कमांड लाइन के माध्यम से। तो एक समाधान हमेशा एक डिफ़ॉल्ट डिफ़ॉल्ट के साथ ग्राहकों को आह्वान किया जा सकता है:
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"
और आपके पास ${XDG_CONFIG_HOME}/ssh/config
कुछ ऐसा होना चाहिए:
Host *
IdentityFile /home/user/.config/ssh/id_dsa
क्या अभी तक काम नहीं करता है
हालाँकि GNUPGHOME
एक प्रलेखित चर है, फेडोरा 21 के तहत ~/.gnupg
जब आप एक नया सत्र शुरू करते हैं तो आप एक नई निर्देशिका के निर्माण के साथ समाप्त होंगे ।
हालांकि ICEauthority
एक दस्तावेज चर है, फेडोरा 21 के तहत जब आप एक नया सत्र शुरू करते हैं तो आप एक नई कुकी के निर्माण के साथ समाप्त होंगे।
डॉटफ़ाइल ~/.swt
सामग्री को संभवतः सीधे स्टोर किया जाना चाहिए ${XDG_DATA_HOME}
, क्योंकि दोनों में lib
निर्देशिकाएं हैं। यदि संभव हो तो कैसे किया जाए, इस पर कोई दस्तावेज नहीं मिला।
मोज़िला उत्पाद एक उपयुक्त पर्यावरण चर का समर्थन नहीं करते हैं, देखें कि मोज़िला उत्पादों को कस्टम उपयोगकर्ता कॉन्फ़िगरेशन निर्देशिका और फ़्रीडेस्कटॉप.org XDG बेस डायरेक्टरी विनिर्देशन के लिए समर्थन का उपयोग करने की अनुमति नहीं है ।
अन्य उपयोगी स्रोत