En effet, la réponse courte actuelle à la question est que vous ne pouvez pas , car certaines applications codent en dur le chemin. Néanmoins, de nombreuses applications qui ne prennent pas spécifiquement en charge les répertoires XDG permettent de définir d'autres répertoires via des variables d'environnement. Vous devez parfois modifier la configuration à l'échelle du système, par exemple avec le shell, mais la plupart du temps, vous devriez pouvoir effectuer l'étape en tant qu'utilisateur non privilégié.
Mettre sa coquille
# 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
'
Si vous utilisez plusieurs shell, par exemple zsh pour le shell interactif, mais un autre pour l'écriture de scripts, vous voudrez peut-être $XDG_CONFIG_HOME/profile
déposer, que vous allez trouver dans le script d'initialisation du shell approprié.
Définition des variables d'environnement
# 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"
Solution de contournement
SSH
SSH fournit un moyen de modifier le fichier de configuration client, mais - autant que je sache - uniquement via la ligne de commande. Ainsi, une solution pour toujours invoquer les clients avec un emplacement par défaut non peut être:
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"
Et votre ${XDG_CONFIG_HOME}/ssh/config
devrait contenir quelque chose comme:
Host *
IdentityFile /home/user/.config/ssh/id_dsa
Ce qui ne fonctionne pas encore
Bien qu'il s'agisse d' GNUPGHOME
une variable documentée, sous Fedora 21, vous vous retrouverez avec la création d'un nouveau ~/.gnupg
répertoire lorsque vous lancerez une nouvelle session.
Bien qu'il s'agisse d' ICEauthority
une variable documentée, sous Fedora 21, vous vous retrouverez avec la création d'un nouveau cookie lorsque vous lancerez une nouvelle session.
Le ~/.swt
contenu du fichier dot devrait probablement être stocké directement dans ${XDG_DATA_HOME}
, car les deux ont des lib
répertoires. Aucune documentation n'a été trouvée sur la façon de procéder si cela est possible.
Les produits Mozilla ne prennent pas en charge une variable d'environnement appropriée, voir Les produits Mozilla ne permettent pas d'utiliser un répertoire de configuration utilisateur personnalisé et la prise en charge de la spécification de répertoire de base Freedesktop.org XDG .
Autres sources utiles
$XDG_CACHE_HOME
export XAUTHORITY="$XDG_CACHE_HOME/Xauthority"
2) Veuillez indiquer vos variables! (voir (1) pour un exemple) 3) Pour moibash
, je devais:export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"}
Je recommande de consulter la page wiki d'Arch Linux Support du répertoire de base XDG qui est constamment mis à jour.
GIT
Je viens de déménager mon
.gitconfig
àXDG_CONFIG_HOME
OSX. Selon la documentation de git-config (lien omis en raison de la réputation).J'ai défini la variable d'environnement à l'aide des instructions de la section Définition de la variable d'environnement PATH à l'échelle du système dans Mavericks . Notez que vous devrez créer le fichier
XDG_CONFIG_HOME/git/config
vous-même et s'il~/.gitconfig
existe, il aura priorité.VIGUEUR
J'ai utilisé l'article 2011 de Tom Vincent Vim respect XDG et il semble fonctionner. Je ne suis pas sûr de la réponse ci-dessus;
VIMDOTDIR
ne semble pas être une chose.la source
Zsh fait un travail légèrement meilleur que bash vous permettant de désencombrer votre maison en utilisant la
$ZDOTDIR
variable. Pour éloigner zsh, vous devez ajouter ce qui suit à votre~/.zshenv
fichier:Si vous avez des privilèges root, vous pouvez les ajouter à la place
/etc/zsh/zshenv
et éviter d'avoir besoin de tout fichier dot zsh dans votre $ HOME. À partir d'ici, tous vos autres fichiers dot zsh peuvent être déplacés vers~/.config/zsh
, comme.zshrc
. Je recommande également d' ajouter votre histoire zsh à l'$XDG_DATA_HOME
emplacement:HISTFILE=$XDG_DATA_HOME/zsh/zsh_history
.Certaines applications rechercheront les emplacements XDG par défaut et vous ne le réaliserez peut-être même pas car vous avez toujours un fichier dot hérité dans votre répertoire $ HOME. Git en est un bon exemple - si vous en avez un
~/.gitconfig
, essayez de le déplacer vers~/.config/git/config
. Mon préféré, Fish Shell , utilise également par défaut ~ / .config.Vérifiez également vos autres applications pour leur propre version d'une variable re-HOME-ing. Beaucoup le supportent XDG via une variable:
export ATOM_HOME=$XDG_CONFIG_HOME/atom
export LPASS_HOME=$XDG_CONFIG_HOME/lpass
export _Z_DATA=$XDG_DATA_HOME/z/z.txt
Mais il y a encore un mur de honte XDG assez étendu. Tmux a été activement hostile au soutien du désencombrement de votre $ HOME. Idem avec pylint . Et Julia . Et la liste continue. Arch conserve ici une belle liste de support XDG .
Honnêtement, je ne comprends pas la résistance à le soutenir. Les utilisateurs doivent clairement envoyer un message clair que les applications ne doivent pas exécuter de manière approximative leur $ HOME. Ce n'est plus correct. Un système moderne utilise des centaines d'applications qui polluent $ HOME, et non des dizaines comme il y a 20 ans.
la source