De hecho, la respuesta corta actual a la pregunta es que no puedes , ya que algunas aplicaciones codifican la ruta. Sin embargo, muchas aplicaciones que no admiten específicamente directorios XDG permiten configurar otros directorios a través de variables de entorno. En algún momento debe poder cambiar la configuración de todo el sistema, por ejemplo, con shell, pero la mayoría de las veces, debe poder realizar el paso como un usuario sin privilegios.
Poniendo tu caparazón
# 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 usa varios shell, por ejemplo zsh para shell interactivo, pero otro para scripting, es posible que desee $XDG_CONFIG_HOME/profile
archivar, que obtendrá en el script de inicialización de shell relevante.
Establecer variables de entorno
# 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"
Solución alterna
SSH
SSH proporciona una forma de cambiar el archivo de configuración del cliente, pero, por lo que encontré, solo a través de la línea de comandos. Entonces, una solución para invocar siempre a los clientes con un emplazamiento no predeterminado puede ser:
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"
Y ${XDG_CONFIG_HOME}/ssh/config
debería contener algo como:
Host *
IdentityFile /home/user/.config/ssh/id_dsa
Lo que aún no funciona
Aunque GNUPGHOME
es una variable documentada, bajo Fedora 21 terminarás con la creación de un nuevo ~/.gnupg
directorio cuando inicies una nueva sesión.
Aunque ICEauthority
es una variable documentada, bajo Fedora 21 terminará con la creación de una nueva cookie cuando inicie una nueva sesión.
El ~/.swt
contenido del archivo de puntos probablemente debería almacenarse directamente ${XDG_DATA_HOME}
, ya que ambos tienen lib
directorios. No se encontró documentación sobre cómo hacerlo si es posible.
Los productos de Mozilla no admiten una variable de entorno adecuada; consulte los productos de Mozilla no permiten utilizar un directorio de configuración de usuario personalizado y Soporte para la especificación de directorio base XDG de Freedesktop.org .
Otras fuentes utiles
$XDG_CACHE_HOME
export XAUTHORITY="$XDG_CACHE_HOME/Xauthority"
2) ¡Por favor, indique sus variables! (ver (1) para un ejemplo) 3) Para mibash
, necesitaba:export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"}
Recomiendo consultar el soporte del Directorio base XDG de la página wiki de Arch Linux que se actualiza continuamente.
GIT
Me acabo de mudar a mi
.gitconfig
aXDG_CONFIG_HOME
en OSX. Según la documentación de git-config (enlace omitido debido a la reputación).Configuré la variable de entorno usando las instrucciones en Configuración de la variable de entorno PATH de todo el sistema en Mavericks . Tenga en cuenta que deberá crear el archivo
XDG_CONFIG_HOME/git/config
usted mismo y, si~/.gitconfig
existe, tendrá prioridad.EMPUJE
Utilicé el artículo de Tom Vincent de 2011, Vim respect XDG, y parece funcionar. No estoy seguro de la respuesta anterior;
VIMDOTDIR
no parece ser una cosafuente
Zsh hace un trabajo un poco mejor que bash, lo que le permite ordenar su casa usando la
$ZDOTDIR
variable. Para mover zsh fuera del camino, debe agregar lo siguiente a su~/.zshenv
archivo:Si tiene privilegios de root, puede agregar esto
/etc/zsh/zshenv
y evitar la necesidad de cualquier archivo de puntos zsh en su $ HOME. Desde aquí, todos sus otros archivos de puntos zsh se pueden mover a~/.config/zsh
, como.zshrc
. También se recomienda la adición de su historia zsh a la$XDG_DATA_HOME
ubicación:HISTFILE=$XDG_DATA_HOME/zsh/zsh_history
.Algunas aplicaciones buscarán las ubicaciones XDG de manera predeterminada y es posible que ni siquiera se dé cuenta porque todavía tiene un archivo de puntos heredado en su directorio $ HOME. Git es un buen ejemplo de esto: si tiene un
~/.gitconfig
, intente moverlo a~/.config/git/config
. Mi favorito personal, Fish Shell , también usa ~ / .config por defecto.Además, verifique sus otras aplicaciones para ver su propia versión de una variable de $ HOME. Muchos lo admiten XDG a través de una variable:
export ATOM_HOME=$XDG_CONFIG_HOME/atom
export LPASS_HOME=$XDG_CONFIG_HOME/lpass
export _Z_DATA=$XDG_DATA_HOME/z/z.txt
Pero todavía hay un muro de vergüenza XDG bastante extenso. Tmux ha sido activamente hostil para apoyar la eliminación de su $ HOME. Lo mismo con pylint . Y Julia . Y la lista continúa. Arch mantiene una buena lista de soporte de XDG aquí .
Honestamente, no puedo entender la resistencia para apoyarlo. Los usuarios deben enviar claramente un mensaje claro de que las aplicaciones no deberían estar funcionando mal en su $ HOME. Ya no está bien. Un sistema moderno utiliza cientos de aplicaciones que contaminan $ HOME, no decenas como solía ser hace 20 años.
fuente