एस्केप हैश मार्क (#) / आदि / पर्यावरण में


17

मैं एक env वैरिएबल जोड़ रहा हूं, /etc/environmentलेकिन क्योंकि वैरिएबल वैल्यू में # साइन है, स्ट्रिंग स्ट्राइप की गई है।

MYSQL_PWD="something#no"

अब अगर मैं envऊपर कोड उपज है MYSQL_PWD=something। मैं हैश से कैसे बच सकता हूं? मैंने पहले ही \चरित्र की कोशिश की है।


क्या आप सुनिश्चित हैं कि आप वही चीज़ पोस्ट कर रहे हैं जिसे आप डाल रहे हैं /etc/environment? क्योंकि मैं डेबियन व्हीज़ी के इस व्यवहार की नकल नहीं कर सकता।
जोसेफ आर।

क्षमा निर्यात नहीं है। मेरा सवाल अपडेट किया।
उमैर ए।

अभी के लिए मैंने MySQL pwd :(
Umair A.

मैं आपके व्यवहार की नकल करने में कामयाब रहा। मुझे महसूस नहीं हुआ कि मुझे पढ़ने के लिए अपने शेल को वापस लाने के लिए लॉग आउट करने की आवश्यकता है /etc/environment
जोसेफ आर।

@JosephR। - मैंने इसे दोहराया और साथ ही आश्चर्यचकित था। इस फ़ाइल की भूमिका को देखते हुए ऐसा लगता है कि यह इरादे के अनुरूप है।
slm

जवाबों:


18

यह संभव प्रतीत नहीं होता है /etc/environment। यह चर के लिए एक सामान्य स्थान के रूप में है जो स्वतंत्र है। यह देखते हुए ऐसा नहीं लगता कि यह #उनमें हैश के निशान ( ) के साथ तार का समर्थन करता है और उन्हें बचने का कोई रास्ता नहीं दिखाई देता है।

मुझे यह एसएफ क्यू एंड ए शीर्षक मिला: कैसे कोई ठीक से लिनक्स / पर्यावरण में एक प्रमुख "#" चरित्र से बच जाता है? । इनमें से कोई भी तरीका काम नहीं आया:

  • नियंत्रण = "हैलो"
  • test0 = "# हैलो"
  • test1 = "ज \ #ello"
  • test2 = "ज # एलो"
  • test3 = "ज // # एलो"
  • test4 = "ज / # एलो"
  • test5 = ज # एलो
  • test6 = ज \ #ello
  • test7 = ज # एलो
  • test8 = ज // # एलो
  • test9 = ज / # एलो
  • test10 = 'ज # एलो'
  • test11 = 'ज \ #ello'
  • test12 = 'ज # एलो'
  • test13 = 'ज // # एलो'
  • test14 = 'ज / # एलो'

उस प्रश्न का स्वीकृत उत्तर और मेरी सलाह क्या होगी:

वैसे यह मुश्किल सामान है जिसे आप करना चाहते हैं /etc/environment, शेल सिंटैक्स नहीं है, यह एक जैसा दिखता है, लेकिन ऐसा नहीं है, जो लोगों को निराश करता है। पीछे विचार/etc/environment अद्भुत था। चरों को स्थापित करने का एक शेल-स्वतंत्र तरीका! वाह! लेकिन व्यावहारिक सीमाएं इसे बेकार बनाती हैं।

आप वहाँ चर नहीं कर सकते। उदाहरण के लिए प्रयास करें MAIL=$HOME/Maildir/और देखें कि क्या होता है। किसी भी उद्देश्य के लिए इसका उपयोग करने से रोकने के लिए सबसे अच्छा है, अफसोस। तो आप इसके साथ ऐसी चीजें नहीं कर सकते हैं जो कि आप एक शेल द्वारा संसाधित किए जाने पर करने में सक्षम होने की उम्मीद करेंगे।

का प्रयोग करें /etc/profileया /etc/bashrc

फिर भी एक और प्रश्नोत्तर ने यह तर्क दिया कि ऐसा क्यों है:

/etc/environment# से बचने का कोई तरीका नहीं है (जैसा कि इसे एक टिप्पणी के रूप में माना जाता है) क्योंकि इसे PAM मॉड्यूल "pam_env" द्वारा पार्स किया जा रहा है और यह इसे KEY = VAL जोड़े की एक सरल सूची के रूप में मानता है और तदनुसार वातावरण सेट करता है। यह बैश / शेल नहीं है, पार्सर के पास चर विस्तार या भागने वाले पात्रों को करने के लिए कोई भाषा नहीं है।

संदर्भ


क्या वह बग है या इसके पीछे कोई कारण है?
उमर ए।

1
@UmairAshraf - बग नहीं, बस सीमित कार्यक्षमता ने इस फ़ाइल की भूमिका दी है। इस फ़ाइल में एकाधिक खोल प्रौद्योगिकियों में फैला तो यह है कि सभी के गोले उस में उपयोग किया जाएगा में समर्थित हैं सुविधाओं के साथ जाना पड़ता है।
SLM

कितना मूर्ख है; यह बस के रूप में एक ही प्रारूप का उपयोग किया जाना चाहिए /proc/environ
कज़

1

शायद बहुत देर हो गई, लेकिन मेरे लिए काम करने से पहले तीन बैकस्लैश#

यदि पासवर्ड है, तो "व्यवस्थापक # 123" कहें, आप इसे इस रूप में परिभाषित कर सकते हैं

admin\\\#123

यह /etc/environmentफ़ाइल में मेरे लिए काम नहीं किया ।
जॉय वी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.