Thật vậy, câu trả lời ngắn hiện tại cho câu hỏi là bạn không thể , như một số ứng dụng mã hóa đường dẫn. Không ít, nhiều ứng dụng không hỗ trợ cụ thể các thư mục XDG cho phép đặt các thư mục khác thông qua các biến môi trường. Đôi khi bạn cần có thể thay đổi cấu hình toàn hệ thống, ví dụ như với shell, nhưng hầu hết thời gian, bạn sẽ có thể thực hiện bước này với tư cách là người dùng không có quyền.
Đặt vỏ của bạn
# Setting bash to use $XDG_CONFIG_HOME/bash
### Moving existing files
mkdir -p $XDG_CONFIG_HOME/bash
for file in ~/.bash*;do
dest=${XDG_CONFIG_HOME}/bash/$(basename $file|cut -d\. -f2)
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
if [ -d "\$XDG_CONFIG_HOME/bash" ] && [ "\$0" = "bash" ]
then
. "\${XDG_CONFIG_HOME}/bash/bash_profile"
. "\${XDG_CONFIG_HOME}/bash/bashrc"
HISTFILE="\${XDG_CONFIG_HOME}/bash/bash_history"
fi
CONF
'
sudo sh -c 'cat >>/etc/bash.bash_logout <<CONF
if [ -s "\${XDG_CONFIG_HOME}/bash/bash_logout" ]
then
. "\${XDG_CONFIG_HOME}/bash/bash_logout"
fi
CONF
'
# Setting zsh
## System wide configuration (using xdg directories)
sudo sh -c 'cat >>/etc/zshenv <<CONF
if [[ -z "\$XDG_CONFIG_HOME" ]]
then
export XDG_CONFIG_HOME="\$HOME/.config"
fi
if [[ -d "\$XDG_CONFIG_HOME/zsh" ]]
then
export ZDOTDIR="\$XDG_CONFIG_HOME/zsh"
fi
CONF
'
Nếu bạn sử dụng nhiều shell, ví dụ zsh cho shell tương tác, nhưng một shell khác để tạo script, bạn có thể muốn $XDG_CONFIG_HOME/profile
tập tin mà bạn sẽ lấy trong tập lệnh khởi tạo shell có liên quan.
Đặt biến môi trường
# 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"
Làm việc xung quanh
SSH
SSH không cung cấp cách thay đổi tệp cấu hình máy khách, nhưng - theo như tôi tìm thấy - chỉ thông qua dòng lệnh. Vì vậy, một giải pháp để luôn gọi các máy khách không có vị trí mặc định nào có thể là:
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"
Và của bạn ${XDG_CONFIG_HOME}/ssh/config
nên chứa một cái gì đó như:
Host *
IdentityFile /home/user/.config/ssh/id_dsa
Những gì chưa làm việc
Mặc dầu GNUPGHOME
là một biến được ghi lại, theo Fedora 21, bạn sẽ kết thúc bằng việc tạo ra một biến mới ~/.gnupg
thư mục khi bạn khởi chạy một phiên mới.
Mặc dầu ICEauthority
là một biến tài liệu, theo Fedora 21, bạn sẽ kết thúc với việc tạo cookie mới khi bạn khởi chạy một phiên mới.
Dấu chấm ~/.swt
nội dung có lẽ nên được lưu trữ trực tiếp vào ${XDG_DATA_HOME}
, vì cả hai đều có lib
thư mục. Không có tài liệu nào được tìm thấy về cách làm điều đó nếu có thể.
Mozilla sản phẩm không hỗ trợ một biến môi trường thích hợp, xem Các sản phẩm Mozilla không cho phép sử dụng thư mục cấu hình người dùng tùy chỉnh và Hỗ trợ cho Đặc tả thư mục cơ sở XDG của Freedesktop.org .
Các nguồn hữu ích khác