Tatsächlich lautet die aktuelle kurze Antwort auf die Frage, dass dies nicht möglich ist , da einige Anwendungen den Pfad fest codieren. Viele Anwendungen, die XDG-Verzeichnisse nicht speziell unterstützen, ermöglichen es jedoch, andere Verzeichnisse über Umgebungsvariablen festzulegen. Manchmal müssen Sie in der Lage sein, die systemweite Konfiguration zu ändern, beispielsweise mit der Shell. Meistens sollten Sie jedoch in der Lage sein, den Schritt als nicht privilegierter Benutzer auszuführen.
Einstellen Sie 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
'
Wenn Sie mehrere Shells verwenden, z. B. zsh für die interaktive Shell, aber eine andere für die Skripterstellung, möchten Sie möglicherweise eine $XDG_CONFIG_HOME/profile
Datei erstellen, die Sie im entsprechenden Shell-Initialisierungsskript finden.
Umgebungsvariablen setzen
# 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"
Umgehen
SSH
SSH bietet eine Möglichkeit, die Client-Konfigurationsdatei zu ändern, aber - soweit ich weiß - nur über die Befehlszeile. So kann eine Lösung, um die Clients immer mit einer Nicht-Standardeinstellung aufzurufen, sein:
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"
Und Ihr ${XDG_CONFIG_HOME}/ssh/config
solltet so etwas enthalten:
Host *
IdentityFile /home/user/.config/ssh/id_dsa
Was geht noch nicht
Obwohl GNUPGHOME
es sich um eine dokumentierte Variable handelt, werden Sie unter Fedora 21 ~/.gnupg
beim Starten einer neuen Sitzung ein neues Verzeichnis erstellen.
Obwohl ICEauthority
es sich um eine dokumentierte Variable handelt, wird unter Fedora 21 beim Starten einer neuen Sitzung ein neues Cookie erstellt.
Der dotfile- ~/.swt
Inhalt sollte wahrscheinlich direkt in gespeichert werden ${XDG_DATA_HOME}
, da beide lib
Verzeichnisse haben. Es wurde keine Dokumentation gefunden, wie man das macht, wenn es möglich ist.
Mozilla- Produkte unterstützen keine geeignete Umgebungsvariable. Weitere Informationen finden Sie unter Mozilla-Produkte ermöglichen nicht die Verwendung eines benutzerdefinierten Benutzerkonfigurationsverzeichnisses und der Unterstützung für die XDG-Basisverzeichnisspezifikation von Freedesktop.org .
Andere nützliche Quellen