क्या होमब्रे के माध्यम से बैश को अपग्रेड करना सुरक्षित है?


81

मैं ओएस एक्स के लिए नया हूं। मैं मैकबुक प्रो पर ओएस एक्स लॉयन चला रहा हूं। क्या होमब्रे का उपयोग करके बैश शेल को अपग्रेड करना सुरक्षित है:

$ brew install bash

यदि सुरक्षित है, तो मैं इसे टर्मिनल के माध्यम से चलने वाले शेल का डिफ़ॉल्ट उदाहरण कैसे बनाऊं?

धन्यवाद!


2
यह सवाल अचानक बेहद प्रासंगिक हो गया है,
शेलशॉक

हाँ। 10
चरस

जवाबों:


105

/{,usr/}{,s}bin/आमतौर पर बायनेरिज़ को अन्य फ़ाइलों के साथ प्रतिस्थापित नहीं किया जाना चाहिए। अन्य कार्यक्रमों से उन्हें ओएस एक्स के साथ आने वाले संस्करण होने की उम्मीद है, और उन्हें ओएस उन्नयन द्वारा बदल दिया गया है।

चलाने के बाद brew install bash, आप डिफ़ॉल्ट शेल को सुरक्षित रूप से बदल सकते हैं:

  • जोड़ने /usr/local/bin/bashके लिए/etc/shells
  • चल रहा है chsh -s /usr/local/bin/bash

टर्मिनल या iTerm 2 में सेटिंग्स को आम तौर पर बदलना नहीं पड़ता है। वे दोनों डिफ़ॉल्ट शेल के लॉगिन शेल के साथ नई विंडो खोलने के लिए डिफ़ॉल्ट हैं।

डिफ़ॉल्ट शेल को सिस्टम प्राथमिकता से या dscl से भी बदला जा सकता है, लेकिन सभी तीन विकल्प केवल संशोधित होते हैं /var/db/dslocal/nodes/Default/users/$USER.plist


ऐसा लगता है कि यह काम किया है, और अगर मैं किसी भी मुद्दे का अनुभव करता हूं तो इसे वापस रोल करना आसान होना चाहिए! धन्यवाद!
रूडी

पता नहीं था कि उन्नत विकल्प पृष्ठ था। मिठाई!
लेमनगिन्जर

2
/etc/shellsकाढ़ा-स्थापित बैश को शामिल करने के लिए संपादन की आवश्यकता है। अन्यथा (कम से कम मेरी मशीन पर) टर्मिनल शुरू करने से इनकार कर देगा।
ब्रेंडंजरविन

2
तीसरा आदेश (csh -s) Mavericks 10.9.2 पर आवश्यक नहीं प्रतीत होता है।
ब्रेंट फस्ट

2
मुझे बस इसके brew install bashलिए काम करना था। (यानी संशोधित करने की ज़रूरत नहीं थी /etc/shells)
डैनियल

4

मैं यहाँ गलत हो सकता है, लेकिन जहाँ तक मुझे पता है brewकि यह इसका उदाहरण है bash, क्योंकि काढ़ा काम करता है, /usr/local/binजबकि सिस्टम डिफॉल्ट /bin(( /usr/bin)) के तहत काम करता है ।

टर्मिनल के बारे में, आप अपने स्वयं के, कस्टम कमांड के साथ खोल खोल सकते हैं। प्राथमिकताएं> स्टार्टअप पर जाएं और शेल खोलें: कमांड (पूरा पथ) । बस अपने नए bashऔर vuala के लिए रास्ता टाइप करें !

आशा है ये मदद करेगा!

BTW: बैकअप! इस स्थितियों में सबसे अच्छी सलाह!


हे, तुम्हें पता है क्या, यह जवाब वास्तव में एक आकर्षण की तरह काम करता है
कास्टियल

0

इससे पहले कि आप कुछ भी करें, अपनी वर्तमान फ़ाइल का बैक अप लें (निश्चित रूप से, लेकिन हमेशा कहने योग्य है)

sudo cp /bin/bash /bin/bash.3.2.bk

फिर होमबॉव डाउनलोड करने वाले बैश निष्पादन योग्य के लिए एक सिमलिंक बनाएं। मुझे लगता है कि यह / usr / स्थानीय / तहखाने में होगा, जैसे

sudo ln -s /usr/local/Cellar/bash/4.2.10/bin/bash /bin/bash

अब / बिन / bash आपके usr / स्थानीय निर्देशिका में फ़ाइल को इंगित करता है


3
सिस्टम संस्करण के लिए नए बैश को बंद करने का नकारात्मक पक्ष यह है कि OS का कोई भी अपडेट आपके पसंदीदा शेल को मिटा सकता है। संभवत: ओपी नई विशेषताओं का उपयोग करना चाहता है, जो अगर ओएस "पुराने ओएस की तुलना में नया" स्थापित करता है, लेकिन बैश के "कस्टम से पुराने" संस्करण को स्थापित कर सकता है। डिफ़ॉल्ट पथ को बदलने या उपयोगकर्ता शेल चर को बदलने के लिए बेहतर है।
bmike

ठीक है, आप बस एक नया simlink बना सकते हैं क्योंकि यह आपके usr / स्थानीय निर्देशिका में bash के संस्करण को अधिलेखित नहीं करेगा। लेकिन आप सही हैं, डैनियल का तरीका बेहतर है
लेमनगिंगर

ऊह - संपादित आपका जवाब है कि पहले डाल करने के लिए कृपया (और यदि आप एक दूसरे विकल्प के रूप में पसंद करते हैं मूल विचार रखने - मुझे लगता है कि ज्यादा बेहतर पसंद है और उल्टा करने के लिए अपने वोट :-) एक मौका प्यार होता
bmike

1
हम्म, अच्छी तरह से / कि / मैंने क्या कहा है, लेकिन मैंने यह स्पष्ट करने की कोशिश की कि प्रत्येक चरण थोड़ा बेहतर होता है। फिर भी लगता है कि टॉप रेटेड उत्तर संभव है, हालांकि बेहतर है :)
लेमोन्गिंगर

यह सिस्टम शेल को बदलने के बारे में जाने के लिए एक बहुत खतरनाक तरीका है।
सैमुअल मिकेल बोल्स

0

मुझे लगता है कि यदि आप अभी लॉन्च करते हैं तो यह सुरक्षित है

brew install bash

और फिर इसे अपने डिफ़ॉल्ट शेल के रूप में जोड़ें

chsh -s /usr/local/bin/bash

चूंकि आप केवल अपने वर्तमान उपयोगकर्ता को संशोधित कर रहे हैं। हालाँकि, मैंने देखा कि मेरा डिफ़ॉल्ट ~ / .profile है

if [ "/bin/bash" == $BASH ]; then
    source ~/.bashrc
fi

इसलिए इसे अद्यतन करने की आवश्यकता है। मैंने इसे बदल दिया

if [ "bash" == $(basename $BASH) ]; then
        source ~/.bashrc
fi

chshअकेले पर्याप्त क्यों नहीं है, इसके लिए अन्य उत्तर देखें । इसके अलावा आपकी अपडेट .profile टुकड़ा मूल एक के समान लगता है
nohillside

@patrix: इसे इंगित करने के लिए धन्यवाद, मैंने दूसरा स्निपेट अपडेट किया। यह अच्छा brew install bashहोगा यदि किसी भी आगे की कार्रवाई की आवश्यकता नहीं होगी। मेरे द्वारा अपडेट की गई प्रोफ़ाइल के साथ, यह नहीं है। मुझे उम्मीद है कि यह दूसरों की मदद कर सकता है।
जियानलुका कासाटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.