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
$XDG_CACHE_HOME
export XAUTHORITY="$XDG_CACHE_HOME/Xauthority"
2) Bitte geben Sie Ihre Variablen an! (siehe (1) für ein Beispiel) 3) Für meinebash
musste ich:export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"}
Ich empfehle, die Arch Linux-Wiki-Seite XDG Base Directory-Unterstützung zu konsultieren, die ständig aktualisiert wird.
GIT
Ich zog meine
.gitconfig
zuXDG_CONFIG_HOME
auf OSX. Per git-config Dokumentation (Link aus Reputationsgründen weggelassen).Ich setze die Umgebungsvariable gemäß den Anweisungen unter Festlegen der systemweiten Umgebungsvariablen PATH in Mavericks . Beachten Sie, dass Sie die Datei
XDG_CONFIG_HOME/git/config
selbst erstellen müssen und, falls~/.gitconfig
vorhanden, Vorrang hat.VIM
Ich habe Tom Vincents 2011er Artikel Vim respect XDG verwendet und es scheint zu funktionieren. Ich bin mir bei der obigen Antwort nicht sicher.
VIMDOTDIR
scheint keine Sache zu sein.quelle
Zsh macht einen etwas besseren Job als die Bash, mit der Sie mit der
$ZDOTDIR
Variablen Ihr Zuhause aufräumen können. Um zsh aus dem Weg zu räumen, müssen Sie Folgendes zu Ihrem hinzufügen~/.zshenv
Datei :Wenn Sie über Root-Berechtigungen verfügen, können Sie diese stattdessen hinzufügen,
/etc/zsh/zshenv
um die Notwendigkeit von zsh-Punktdateien in Ihrem $ HOME zu vermeiden. Von hier aus können alle Ihre anderen zsh-Punktedateien verschoben~/.config/zsh
werden.zshrc
. Ich empfehle auch Ihre zsh Geschichte zum Hinzufügen$XDG_DATA_HOME
Ort:HISTFILE=$XDG_DATA_HOME/zsh/zsh_history
.Einige Apps suchen standardmäßig nach den XDG-Speicherorten, und Sie bemerken dies möglicherweise nicht einmal, da sich noch eine ältere Punktdatei in Ihrem $ HOME-Verzeichnis befindet. Git ist ein gutes Beispiel dafür - wenn Sie ein haben
~/.gitconfig
, versuchen Sie es zu verschieben~/.config/git/config
. Mein persönlicher Favorit, Fish Shell , verwendet standardmäßig auch ~ / .config.Überprüfen Sie auch Ihre anderen Apps auf ihre eigene Version einer wiederkehrenden Variablen. Viele unterstützen es XDG über eine Variable:
export ATOM_HOME=$XDG_CONFIG_HOME/atom
export LPASS_HOME=$XDG_CONFIG_HOME/lpass
export _Z_DATA=$XDG_DATA_HOME/z/z.txt
Aber es gibt immer noch eine ziemlich umfangreiche XDG-Mauer der Schande. Tmux war aktiv dagegen, das Aufräumen Ihres $ HOME zu unterstützen. Gleiches gilt für Pylint . Und Julia . Und die Liste geht weiter.Arch führt hier eine schöne Liste der XDG-Unterstützung .
Ehrlich gesagt kann ich den Widerstand gegen die Unterstützung nicht verstehen. Benutzer müssen eine eindeutige Nachricht senden, dass Apps nicht über ihr $ HOME-Konto laufen dürfen. Es ist nicht mehr in Ordnung. Ein modernes System verwendet Hunderte von Apps, die $ HOME verschmutzen, nicht mehr wie vor 20 Jahren.
quelle