.env पासवर्ड एस्केपर
पासवर्ड को ऐसी .env पंक्ति में लिखें जिसे शेल, Node.js dotenv, python-dotenv या docker --env-file ठीक वैसा ही पढ़े, कोट और $ सहित।
हर लाइन को इस तरह कोट किया जाता है कि पार्सर ठीक आपका पासवर्ड ही पढ़े: shell सिंगल कोट इस्तेमाल करता है और हर कोट के लिए '\'' लिखता है, Node dotenv सिंगल, डबल या बैकटिक कोट चुनता है, python-dotenv सिंगल कोट के अंदर \ और \' को एस्केप करता है, और docker --env-file लाइन का बाकी हिस्सा जैसा है वैसा लेता है (बिना कोट)।
पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड नहीं होता।
.env पासवर्ड एस्केपर क्या है?
कोट, डॉलर चिह्न, # या बैकस्लैश वाले पासवर्ड अक्सर .env फ़ाइलें तोड़ देते हैं या वैरिएबल एक्सपैंशन से बदल जाते हैं। यह टूल KEY=value पंक्तियाँ लिखता है जिन्हें हर पार्सर ठीक आपके पासवर्ड की तरह पढ़ता है, और जब कोई पार्सर मान को दर्शा नहीं सकता तब चेतावनी देता है।
.env पासवर्ड एस्केपर का उपयोग कैसे करें
- वैरिएबल का नाम दर्ज करें, जैसे DB_PASSWORD।
- पासवर्ड फ़ील्ड में पासवर्ड लिखें।
- अपने लक्ष्य के लिए पंक्ति कॉपी करें: shell/POSIX, Node.js dotenv, python-dotenv या docker run --env-file।
- उसे अपनी .env फ़ाइल में पेस्ट करें।
उदाहरण
Variable DB_PASSWORD, password p@ss'w"rd$1
Shell: DB_PASSWORD='p@ss'\''w"rd$1' Node dotenv: DB_PASSWORD=`p@ss'w"rd$1` python-dotenv: DB_PASSWORD='p@ss\'w"rd$1' docker --env-file: DB_PASSWORD=p@ss'w"rd$1
शेल, Node dotenv, python-dotenv और docker --env-file के लिए अलग-अलग पंक्तियाँ मिलती हैं।
.env पासवर्ड एस्केपर का उपयोग कब करें
जब भी सीक्रेट में अक्षरों और अंकों के अलावा कुछ हो, इसका उपयोग करें। अगर सीक्रेट आपके नियंत्रण में है तो लंबा अल्फ़ान्यूमेरिक मान एस्केपिंग की समस्या पूरी तरह टाल देता है।
.env पासवर्ड एस्केपर कैसे काम करता है
शेल: मान सिंगल कोट में लपेटा जाता है और हर ' बन जाता है '\'' (सिंगल कोट के भीतर कोई एक्सपैंशन नहीं होता)। Node dotenv (v15+): सिंगल कोट शाब्दिक होते हैं; मान में ' हो तो डबल कोट इस्तेमाल होते हैं (केवल \n और \r व्याख्यायित होते हैं), वरना बैकटिक; बैकस्लैश पर ख़त्म होने वाले या तीनों कोट प्रकार वाले मान दर्शाए नहीं जा सकते। python-dotenv: सिंगल कोट, जिसमें \ और ' को \\ और \' से एस्केप किया जाता है। docker --env-file: कोई कोटिंग नहीं; पंक्ति का बाकी हिस्सा ही मान है, इसलिए नई पंक्तियाँ असंभव हैं।
सामान्य उपयोग मामले
- .env फ़ाइल में $ और कोट वाला डेटाबेस पासवर्ड जोड़ना
- docker run --env-file के लिए सीक्रेट तैयार करना
- # पर कटने वाले dotenv मान ठीक करना
- शेल स्क्रिप्ट के लिए export स्टेटमेंट लिखना
अक्सर पूछे जाने वाले प्रश्न
सीधे डबल कोट क्यों न इस्तेमाल करें?
डबल कोट के भीतर शेल और कुछ dotenv लोडर $VAR को फैलाते हैं और बैकस्लैश को व्याख्यायित करते हैं, जो चुपचाप पासवर्ड बदल देता है।
docker --env-file पंक्ति बिना कोट की क्यों है?
docker run --env-file कोट प्रोसेस नहीं करता; कोट मान का हिस्सा बन जाएँगे।
क्या Docker Compose वही नियम इस्तेमाल करता है?
Docker Compose के .env पार्सर के अपने इंटरपोलेशन नियम हैं, जिन्हें यह टूल मॉडल नहीं करता; Compose का डॉक्यूमेंटेशन देखें या वहाँ शाब्दिक डॉलर के लिए $$ उपयोग करें।