मैं अस्थायी उपयोग के लिए एक स्वच्छ शेल वातावरण कैसे बना सकता हूं?


15

मैं यूनिक्स-केंद्रित लोकप्रिय क्यू एंड ए साइट पर लगातार उत्तर देने वाला हूं, और अपने कई उत्तरों में मैं bashशेल का उपयोग करके उदाहरण प्रदान करता हूं । हालांकि, हर बार जब मैं ऐसा करता हूं तो मुझे यह सुनिश्चित करने के लिए स्वच्छ वातावरण बनाने की प्रक्रिया से गुजरना पड़ता है कि हर कदम का हिसाब और दस्तावेज तैयार किया जाए। मैं इस प्रक्रिया को और अधिक सरल कैसे बना सकता हूं? मैं आदर्श रूप से एक ही आदेश टाइप करने और एक स्वच्छ वातावरण प्राप्त करने के लिए देख रहा हूं, और मेरे द्वारा किए जाने के बाद उस अस्थायी वातावरण के सभी निशान हटा दिए गए हैं।


जवाबों:


10

मैं व्यक्तिगत रूप bashसे ऐसा करने के लिए निम्नलिखित फ़ंक्शन का उपयोग करता हूं :

so() {
    local tmpdir="$(mktemp -d)"
    local tmprc="$(mktemp)"
    cat > "$tmprc" << EOF
PS1='\\$ '
cd "$tmpdir"
EOF
    env - HOME="$HOME" TERM="$TERM" bash --rcfile "$tmprc"
    rm -rf "$tmpdir" "$tmprc"
}

यहाँ यह है कि यह क्या करता है, क्रम में:

  • एक अस्थायी निर्देशिका बनाएं (स्वच्छ वातावरण में हमारी कामकाजी निर्देशिका के रूप में उपयोग करने के लिए);
  • एक अस्थायी फ़ाइल बनाएं (हमारी bashआरसी फ़ाइल के रूप में उपयोग करने के लिए );
  • आरसी फ़ाइल में, वे लाइनें जोड़ें जो:
    • PS1एक स्थान के बाद शीघ्र टर्मिनेटर के लिए संकेत सेट करें , जो इसे उस स्थिति में प्रासंगिक बनाए रखता है जब हम चाहते हैं कि क्यू एंड ए साइट पर हमारे आउटपुट की एक प्रति हो;
    • हमारे द्वारा बनाई गई अस्थायी निर्देशिका में बदलें।
  • के एक नए उदाहरण को आमंत्रित करें bash, जो:
    • प्रारंभ में छोड़कर के लिए एक खाली वातावरण है $HOMEऔर $TERM( env - ...);
    • हम पहले बनाई गई अस्थायी फ़ाइल से इसकी आरसी फ़ाइल पढ़ते हैं ( --rcfile)।
  • एक बार बैश निकलने के बाद, हमारे द्वारा बनाई गई अस्थायी फ़ाइलों को हटा दें।

जाहिर है कि यह पूरी तरह से मूर्ख नहीं है, अर्थात, आप अभी भी अपने सिस्टम के अन्य हिस्सों तक पहुंच सकते हैं। यह, हालांकि, एक साफ अस्थायी वातावरण प्रदान करता है जिसे आप परीक्षण के लिए उपयोग कर सकते हैं।


क्या आपने प्रयोग करने की कोशिश की है script?
h3rrmiller

@ h3rrmiller - हां, हालांकि मैं इसे प्राथमिकता से उपयोग नहीं करने के लिए करता हूं।
क्रिस डाउन

2

chrootएक तरीका है, एक वीएम का उपयोग करना दूसरा है। आप LV पर वर्ण-वातावरण का निर्माण कर सकते हैं, इसे स्नैपशॉट कर सकते हैं, जो कुछ भी कर सकते हैं और फिर स्नैपशॉट स्थिति में वापस ला सकते हैं।

या - VM (डिस्क-स्नैपशॉट) के साथ भी ऐसा ही करें और बाद में सभी परिवर्तनों को वापस लाएं।

मैं आम तौर पर एक ताज़ा स्थापित वीएम (वर्चुअलबॉक्स और किकस्टार्ट या पीएक्सई-बूट के साथ ऑटॉयस्ट का उपयोग करके) करता हूं।

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