আপনার সমস্ত ডটফাইলগুলি এক্সডিজি ডিরেক্টরিতে স্থানান্তরিত করার পদক্ষেপটি কী?


18

XDG বেস ডিরেক্টরি সুনির্দিষ্টকরণ ডিরেক্টরি এক একটি সেট ডেটা সঞ্চয় ব্যবহারকারীকে ফোল্ডারে তথাকথিত ডট ফাইল / ডিরেক্টরির মধ্যে যেতাম করতে ব্যবহৃত হতে পারে প্রদান। এই পোস্টটি লক্ষ্য রাখে যে ব্যবহারকারীরা এই ডিরেক্টরিগুলি যতটা সম্ভব ব্যবহার করতে চান।

উত্তর:


17

প্রকৃতপক্ষে, প্রশ্নের বর্তমান সংক্ষিপ্ত উত্তরটি আপনি পারবেন না , কারণ কিছু অ্যাপ্লিকেশন সেই পথটিকে হার্ডকোড করেছে। তবুও, অনেকগুলি অ্যাপ্লিকেশন যা XDG ডিরেক্টরিগুলিকে বিশেষভাবে সমর্থন করে না তারা পরিবেশের ভেরিয়েবলের মাধ্যমে অন্যান্য ডিরেক্টরি সেট করতে সক্ষম করে। কিছু সময় আপনাকে সিস্টেমের প্রশস্ত কনফিগারেশনটি পরিবর্তন করতে সক্ষম হতে হবে, উদাহরণস্বরূপ শেল সহ, তবে বেশিরভাগ সময়, আপনার অনিবদ্ধ ব্যবহারকারী হিসাবে পদক্ষেপটি সম্পাদন করতে সক্ষম হওয়া উচিত।

আপনাকে শেল সেট করছে

# 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
'

আপনি যদি বেশ কয়েকটি শেল ব্যবহার করেন, উদাহরণস্বরূপ ইন্টারেক্টিভ শেলের জন্য zsh, তবে স্ক্রিপ্টিংয়ের জন্য অন্য একটি, আপনি $XDG_CONFIG_HOME/profileফাইল করতে চাইতে পারেন , যা আপনি প্রাসঙ্গিক শেল ইনিশিয়ালাইজেশন স্ক্রিপ্টে উত্স করবেন।

পরিবেশের ভেরিয়েবল নির্ধারণ করা

# 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"

চারপাশে কাজ

, SSH

এসএসএইচ ক্লায়েন্ট কনফিগারেশন ফাইল পরিবর্তন করার একটি উপায় সরবরাহ করে, তবে - যতদূর আমি খুঁজে পেয়েছি - কেবল কমান্ড লাইনের মাধ্যমে। তাই কোনও ডিফল্ট এমলেসমেন্টের সাথে ক্লায়েন্টদের সর্বদা অনুরোধ করার একটি সমাধান হতে পারে:

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"

এবং আপনার ${XDG_CONFIG_HOME}/ssh/configমধ্যে এমন কিছু থাকা উচিত:

Host *
    IdentityFile /home/user/.config/ssh/id_dsa

এখনও কি কাজ করে না

যদিও GNUPGHOMEডকুমেন্টেড ভেরিয়েবল, ফেডোরা 21 এর অধীনে ~/.gnupgআপনি নতুন সেশনটি চালু করার সময় আপনি একটি নতুন ডিরেক্টরি তৈরির কাজ শেষ করবেন ।

যদিও ICEauthorityডকুমেন্টেড ভেরিয়েবল, ফেডোরা 21 এর অধীনে আপনি যখন নতুন সেশন শুরু করবেন তখন নতুন কুকি তৈরির কাজ শেষ করবেন।

উভয় ডিরেক্টরি আছে হিসাবে ~/.swtসম্ভবত ডটফাইল বিষয়বস্তু সরাসরি মধ্যে সংরক্ষণ করা উচিত । এটি সম্ভব হলে কীভাবে এটি করতে পারে তার কোনও নথিপত্র পাওয়া যায় নি।${XDG_DATA_HOME}lib

মজিলা পণ্যগুলি উপযুক্ত পরিবেশের পরিবর্তনশীলকে সমর্থন করে না, দেখুন মজিলা পণ্যগুলি একটি কাস্টম ব্যবহারকারী কনফিগারেশন ডিরেক্টরি ব্যবহার করার অনুমতি দেয় না এবং ফ্রিডেস্কটপ.অর্গ.এক্সডিজি বেস ডিরেক্টরি নির্দিষ্টকরণের জন্য সমর্থন করে

অন্যান্য দরকারী উত্স


1
ইন্টার-ইন্টারেক্টিভ নন-লগইন শেল (সাধারণ টার্মিনাল ব্যবহার) হিসাবে বাশ ব্যবহার করার সময়, / ইত্যাদি / প্রোফাইল কি একেবারেই পড়া উচিত নয়? আমাদের সংজ্ঞা কি তখন সেট করা হবে না?
হাশকান

1
আমার সিস্টেমে ম্যানপেজ অনুযায়ী আপনি ঠিক বলেছেন। এখন আমি আপনাকে যা পরামর্শ দিচ্ছি তা হল কেবল পরীক্ষা করা, কারণ এটি আপনার সিস্টেমের ডিফল্ট কনফিগারেশনের উপর নির্ভর করে। ফিড ফিরিয়ে দিন, ধন্যবাদ
সাইকোস্লেভ

1
আমি নিশ্চিত করতে পারি যে / ইত্যাদি / প্রোফাইলটি লগ-ইন শেলগুলির জন্য পড়েনি। তবে, আপনি টিএমউक्स খুললে আপনার / ইত্যাদি / প্রোফাইলটি পড়ে। এটি কারণ tmux তার সমস্ত শেল লগইন শেল হিসাবে খোলায়।
হাশকেন

1
ইতিহাস ফাইল ভালো জিনিস অধীনে সংরক্ষণ করা উচিত$XDG_CACHE_HOME

1) যোগ করুন: export XAUTHORITY="$XDG_CACHE_HOME/Xauthority"2) আপনার ভেরিয়েবল উদ্ধৃত করুন! (উদাহরণের জন্য 1 দেখুন ()) 3) আমার জন্য bash, আমি প্রয়োজন হবে:export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"}
টম হালে

6

আমি আর্চ লিনাক্স উইকি পৃষ্ঠার এক্সডিজি বেস ডিরেক্টরি সহায়তার সাথে পরামর্শ করার পরামর্শ দিচ্ছি যা ধারাবাহিকভাবে আপডেট হয়।

এলেবেলে

আমি শুধু আমার সরানো .gitconfigকরার XDG_CONFIG_HOMEউপর ওএসএক্স। গিট-কনফিগার ডকুমেন্টেশন প্রতি (খ্যাতির কারণে লিঙ্ক বাদ দেওয়া হয়েছে)।

Second user-specific configuration file. If $XDG_CONFIG_HOME is not set or
empty, $HOME/.config/git/config will be used. Any single-valued variable 
set in this file will be overwritten by whatever is in ~/.gitconfig. It is
a good idea not to create this file if you sometimes use older versions of
Git, as support for this file was added fairly recently.

আমি মাভেরিক্সে সিস্টেম-ব্যাপী PATH এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণের নির্দেশাবলী ব্যবহার করে পরিবেশ পরিবর্তনশীল সেট করেছি । মনে রাখবেন যে আপনাকে XDG_CONFIG_HOME/git/configনিজে ফাইল তৈরি করতে হবে এবং যদি ~/.gitconfigউপস্থিত থাকে তবে এটি অগ্রাধিকার গ্রহণ করবে।

VIM

আমি টম ভিনসেন্টের 2011 এর নিবন্ধটি Vim শ্রদ্ধেয় XDG ব্যবহার করেছি এবং এটি কার্যকর বলে মনে হচ্ছে। উপরের উত্তর সম্পর্কে আমি নিশ্চিত নই; VIMDOTDIRএকটি জিনিস বলে মনে হচ্ছে না।


দ্রষ্টব্য: আমি নিক্সোস.আরজি ব্যবহার করতে যাচ্ছি যা একটি মার্জিত উপায়ে সমস্ত কনফিগারেশন পুরোপুরি নিয়ন্ত্রণ করা সম্ভব করে
বেন ক্র্যাসি

1

জ্যাশ ব্যাশের চেয়ে কিছুটা ভাল কাজ করে যা আপনাকে $ZDOTDIRভেরিয়েবলটি ব্যবহার করে আপনার বাড়ি ডি-ক্লাটার করতে দেয় । Zsh এর পথ থেকে সরিয়ে নিতে আপনার ~/.zshenvফাইলটিতে নিম্নলিখিতটি যুক্ত করতে হবে:

# ~/.zshenv contents
# this is the bare bones setup to move everything to XDG dir
ZDOTDIR=$HOME/.config/zsh

আপনার যদি রাইট প্রাইভেলিজ থাকে তবে আপনি এটির পরিবর্তে এটি যুক্ত করতে পারেন /etc/zsh/zshenvএবং আপনার $ হোমটিতে কোনও zsh ডটফিলের প্রয়োজনীয়তা এড়াতে পারেন। এখান থেকে, আপনার অন্যান্য zsh ডটফাইলগুলি সরানো যেতে পারে ~/.config/zsh, এর মতো .zshrc। আমিও আপনার zsh ইতিহাস যুক্ত করার প্রস্তাব দিই $XDG_DATA_HOMEঅবস্থান: HISTFILE=$XDG_DATA_HOME/zsh/zsh_history

কিছু অ্যাপ্লিকেশন ডিফল্টরূপে XDG অবস্থানের সন্ধান করবে এবং আপনি এটি উপলব্ধি করতে পারেন না কারণ আপনার $ HOM ডিরেক্টরিতে আপনার এখনও একটি উত্তরাধিকার ডটফাইল রয়েছে। গিট ~/.gitconfigএটির একটি ভাল উদাহরণ - আপনার যদি এটি থাকে তবে এটিকে সরানোর চেষ্টা করুন ~/.config/git/config। আমার ব্যক্তিগত প্রিয়, ফিশ শেল , ডিফল্টরূপেও ~ / .config ব্যবহার করে।

এছাড়াও, আপনার অন্যান্য অ্যাপ্লিকেশনগুলিকে পুনরায়- হোম-আইএন ভেরিয়েবলের নিজস্ব সংস্করণের জন্য পরীক্ষা করুন। অনেকে এটিকে ভেরিয়েবলের মাধ্যমে এক্সডিজি সমর্থন করে:

  • অ্যাটম: export ATOM_HOME=$XDG_CONFIG_HOME/atom
  • lpass: export LPASS_HOME=$XDG_CONFIG_HOME/lpass
  • রূপা / জেড এর একটি রয়েছে: export _Z_DATA=$XDG_DATA_HOME/z/z.txt

তবে এখনও লজ্জার বেশ বিস্তৃত এক্সডিজি প্রাচীর রয়েছে। Tmux আপনার $ HOM- কে ডি- ক্লটারিং সমর্থন করার জন্য সক্রিয়ভাবে প্রতিকূল হয়েছেপাইলট সঙ্গে একইজুলিয়া । এবং তালিকাতে আরও অনেক কিছুই আছে. আর্ক এখানে এক্সডিজি সহায়তার একটি দুর্দান্ত চলমান তালিকা রাখে

সত্য, আমি এটি সমর্থন করার জন্য প্রতিরোধ বুঝতে পারি না। ব্যবহারকারীদের স্পষ্টরূপে একটি স্পষ্ট বার্তা প্রেরণ করা দরকার যে অ্যাপ্লিকেশনগুলি তাদের over হোমের উপর রাফশড চালাচ্ছে না। এখন আর ঠিক নেই। একটি আধুনিক সিস্টেম এমন শত শত অ্যাপ্লিকেশন ব্যবহার করে যা OME হোমকে দূষিত করে, 20 বছর আগের দশকের মতো নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.