XDG_CONFIG_HOME चर को कहां परिभाषित किया जाना चाहिए?


41

XDG विनिर्देश XDG_CONFIG_HOMEचर के बारे में बात करता है, लेकिन यह निर्दिष्ट नहीं करता है कि इसे कहां परिभाषित किया जाना चाहिए। क्या हमें इसे परिभाषित करना चाहिए /etc/X11/Xsession, या क्या यह विंडो मैनेजर की कॉन्फिग फ़ाइल है जिसे इसे परिभाषित करने की आवश्यकता है?

मैंने इसे / etc / पर्यावरण के रूप में घोषित करने की कोशिश की

XDG_CONFIG_HOME="$HOME/.config"

लेकिन यह काम नहीं किया, क्योंकि ऐसा लगता है कि $ घर परिभाषित नहीं है जब /etc/environmentपार्स किया जाता है।

एकमात्र दस्तावेज जो मैं ऑनलाइन पा सकता था, वह गेंटू के लिए था, जहां यह घोषित किया गया था /etc/env.d/90xsession

मैं उबंटू का उपयोग कर रहा हूं। डेबियन आधारित डिस्ट्रोस के लिए सामान्य समाधान क्या होगा?

जवाबों:


24

आर्क लिनक्स में, यह /etc/profileएक /etc/profile.dस्क्रिप्ट का उपयोग करके परिभाषित किया गया है ।

डेबियन / उबंटू के लिए, अगर वहाँ है /etc/profile.d- अंदर एक समान स्क्रिप्ट बनाएं; अगर ऐसी कोई निर्देशिका मौजूद नहीं है - /etc/profileitsef संपादित करें ।

export XDG_CONFIG_HOME="$HOME/.config"

/etc/environmentफ़ाइल से पार्स किया गया है pam_env, जो साधारण नाम = मूल्य कार्य के रूप में व्यवहार करता है यह। हालाँकि, यह भी है /etc/security/pam_env.conf, जो चर विस्तार का समर्थन करता है और इस उद्देश्य के लिए इस्तेमाल किया जा सकता है।


सार अनुपलब्ध है
बाज़

3
यह /etc/profileअब आर्क में नहीं है, और केवल एक बार से उल्लेख किया गया है /etc/profile.d/locale.sh
फिल पिरोवकोव

1
लिंक मर चुका है ...
ManuelSchneid3r

54

आपको इसे कहीं भी परिभाषित करने की आवश्यकता नहीं है , जब तक कि आप डिफ़ॉल्ट को बदलना नहीं चाहते हैं।

XDG बेस डायरेक्टरी विशिष्टता स्पष्ट रूप से कहती है:

यदि $XDG_CONFIG_HOMEया तो सेट नहीं है या खाली नहीं है, तो एक डिफ़ॉल्ट समान का $HOME/.configउपयोग किया जाना चाहिए।

अतः इसे डिफ़ॉल्ट मान में परिभाषित करना निरर्थक है। सभी आज्ञाकारी अनुप्रयोग पहले से ही उपयोग करेंगे$HOME/.config

लेकिन, आप अगर है एक Debian / Ubuntu में डिफ़ॉल्ट बदलना चाहते हैं, सबसे अच्छी जगह है:

  • सिस्टम-व्यापी परिवर्तन के लिए, सभी उपयोगकर्ताओं को प्रभावित करना: /etc/profile
  • केवल आपके उपयोगकर्ता के लिए: ~/.profile

1
downvoter का उत्तर देने में क्या गलत है, यह समझाने के लिए आपका स्वागत है और अधिमानतः इसे बेहतर बनाने में मदद करें
MestreLion

1
यह उत्तर पूरी तरह से ठीक है, सैद्धांतिक रूप से, लेकिन चारों ओर बहुत सारे सॉफ्टवेयर हैं, जो कि एक्सडीजी बेस डायरेक्टरी स्पेसिफिकेशन कंप्लेंट नहीं है और इस अज्ञानता से उपजी कीड़े का एक क्वाटुर्डेकिलियन है।
मैनुएल श्नाइड 3r

5
@ ManuelSchneid3r बहुत सच है, लेकिन इस तरह के सॉफ़्टवेयर सेटिंग के XDG_CONFIG_HOMEलिए वैसे भी बहुत कम फर्क पड़ेगा, यदि कोई हो।
MestreLion

2
ऐसा सॉफ़्टवेयर हो सकता है, जो XDG_CONFIG_HOMEबिना किसी तीसरे पक्ष के विनिर्देशन के भाग के बजाय मानक लिनक्स या यहां तक ​​कि यूनिक्स सुविधा का उपयोग करते हुए, कल्पना के बिना आँख बंद करके उपयोग करता है।
ईगल-आई

3
@ mcnesium मैं कह रहा हूं कि यह शायद चोट नहीं पहुंचा सकता। हालांकि यदि संभव हो, तो आवेदन को स्वयं ठीक करना और अपस्ट्रीम को भेजना बेहतर होगा।
ईगल-आई

5

मैंने पाया है कि यह PAM के माध्यम से पर्यावरण चर सेट करने के लिए सबसे अच्छा काम करता है। आधुनिक लिनक्स डिस्टोस के लिए, इसका मतलब है /etc/environmentया $HOME/.pam_environment(देखें man pam_env)। आप उन्हें /etc/security/pam_env.confएक विशेष सिंटैक्स का उपयोग करके भी सेट कर सकते हैं । यहां बताया गया है कि मैं अपने XDG वैरिएबल को कैसे सेट करता हूं /etc/security/pam_env.conf

XDG_CACHE_HOME  DEFAULT=@{HOME}/.xdg/cache
XDG_CONFIG_HOME DEFAULT=@{HOME}/.xdg/config
XDG_DATA_HOME   DEFAULT=@{HOME}/.xdg/data
XDG_STATE_HOME  DEFAULT=@{HOME}/.xdg/state

पहले मैं इन चरों को अंदर स्थापित करता था /etc/profile.d/custom.sh। हालाँकि, उस फ़ाइल को पढ़ने से पहले कुछ अनुप्रयोग प्रारंभ होते हैं। PAM विधि पर स्विच करने से इस तरह का व्यवहार करने वाले कई अनुप्रयोगों के लिए समस्या हल हो गई।



2
@TomHale बिल्कुल नहीं, चर की स्थापना का पूरा बिंदु चूक को ओवरराइड करना है। यदि आप चूक से खुश हैं, तो आपको इन चरों को निर्धारित करने की आवश्यकता नहीं है।
carlwgeorge

1
Ubuntu 14.04 XDG निर्देशिका चर को डिफ़ॉल्ट रूप से सेट नहीं करता है - सिर्फ इसलिए कि एक विनिर्देश है इसका मतलब यह नहीं है कि किसी का डिस्ट्रो इसका अनुसरण करता है।
टॉम हेल

2
इससे कोई फर्क नहीं पड़ता कि मैं export LESSHISTFILE="$XDG_CACHE_HOME"/less/historyकहाँ जाना चाहता हूँ lessकि युक्ति का संज्ञान नहीं है और डिफॉल्ट अभी तक मेरे डिस्ट्रो द्वारा सेट नहीं किए गए हैं।
टॉम हेल

2
@TomHale यह परिभाषित नहीं करता है कि ऑपरेटिंग सिस्टम को किस चर को सेट करना चाहिए; यह चर को परिभाषित करता है, कि, यदि परिभाषित और गैर-रिक्त है, तो अनुप्रयोग का उपयोग करना चाहिए। और यदि वैरिएबल परिभाषित नहीं है या खाली है, तो एप्लिकेशन को कल्पना में निर्दिष्ट डिफ़ॉल्ट पथ का उपयोग करना चाहिए। इसलिए आपका संक्षिप्त उदाहरण युक्ति-संगत नहीं है, क्योंकि यह पहली बार XDG_CACHE_HOMEपरिभाषित और गैर-रिक्त नहीं है। इसके बजाय यह होना चाहिए:export LESSHISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}"/less/history
खलनायक

0

Zsh उपयोगकर्ताओं के लिए, इसे अपनी .zshenvफ़ाइल में परिभाषित करें

export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"

1
खुद को समझाने के लिए डाउनवॉटर की देखभाल?
smac89
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.