zsh से bash में शेल बदलना


17

मेरे वेब सर्वर को zsh शेल का उपयोग करने वाले किसी व्यक्ति द्वारा छेड़छाड़ किया गया था। मैं बैश शेल का उपयोग करके अधिक सहज महसूस करता हूं, क्योंकि वह डिफॉल्ट है जो उबंटू और ओएस एक्स (मेरे द्वारा उपयोग किए जाने वाले दो मुख्य ऑपरेटिंग सिस्टम) के साथ आता है। लेकिन यह सवाल उबंटू सर्वर पर केंद्रित है। इस वेब सर्वर पर मेरी 4 वेबसाइट चल रही हैं, मैं बायोबू का उपयोग करता हूं, मैं tmux का उपयोग करता हूं, मैं रेल, नोड, जेएस, अपाचे, कुछ डेमॉन पर माणिक / रूबी का उपयोग करता हूं। यदि मैं वर्तमान रूट शेल को zsh से बैश में स्विच करता हूं, तो क्या इस स्विच से कोई नकारात्मक दुष्प्रभाव हो सकता है? उदाहरण के लिए, प्रक्रियाओं को मार दिया जाएगा क्योंकि उनकी मूल प्रक्रिया (शेल) स्विच हो गई है?


क्या आप परिवर्तन के परिणामों के बारे में पूछ रहे हैं (जो कि कोई नहीं हैं, मैं अभी zsh का उपयोग कर रहा हूं और जब भी मुझे पसंद हो तो bash पर स्विच कर सकता हूं या क्या आप इस बारे में पूछ रहे हैं कि शेल को प्रभावी ढंग से कैसे बदला जाए?
ब्रिअम

@ ब्रायम मैं बदलाव के परिणामों से घबरा गया हूं। अगर कोई नतीजा नहीं निकला तो मैं बदल जाऊंगा। मैं बस सोच रहा था कि शेल अपाचे जैसे इन डेमों में से कुछ के लिए एक माता-पिता की प्रक्रिया थी, और अगर मुझे इससे बाहर निकलना था, तो यह अपाचे प्रक्रिया को मार देगा। लेकिन मुझे लगता है कि मैं गलत हूं।
जॉनमेरलिनो

जवाबों:


10

अपने शेल को बदलना, के माध्यम sudo chsh --shell=/bin/bash $USERसे शेल फ़ील्ड को बदल देगा /etc/passwd। यह मान केवल लॉगिन समय पर लिया जाता है, जब सिस्टम को यह पता नहीं होता है कि आपके लिए किस शेल का उपयोग करना है।

चल रही प्रक्रियाएं, चाहे शुरू की हों zsh, bash apacheया evil_overlord's_programप्रभावित नहीं होंगी


क्या शेल में चलने वाली अन्य प्रक्रियाओं की मूल प्रक्रिया नहीं है, या सिर्फ नियंत्रण टर्मिनल (और शेल नहीं) को मूल प्रक्रिया माना जाएगा?
जॉनमेरलिनो

loginकार्यक्रम सब कुछ की तरह, एक प्रक्रिया में चलाता है। जब यह आपको अंदर जाने देता है, तो यह आपके UID, आदि के साथ एक और प्रक्रिया बनाता है, और / bin / bash (/ / etc / passdd) चलाता है। बैश शेल एसटीडीआईएन (सेट अप login) से पढ़ता है , और गैर-निर्मित कमांड को कांटा / निष्पादित करेगा, उन्हें समाप्त करने के लिए प्रतीक्षा करें, और अधिक कमांड के लिए लूप करें। "टर्मिनल को नियंत्रित करने" का विचार यूनिक्स / लिनक्स में उपयोगी नहीं है।
वाल्टिनेटर

26

स्टैक ओवरफ्लो से उत्तर ( जेडश से बैश पर स्विच करना ):

आप अपने मौजूदा शेल को एक नए शेल के साथ बदलने के लिए निष्पादन का उपयोग कर सकते हैं:

बैश पर जाएं:

exec bash

Zsh पर स्विच करें:

exec zsh

यह नई टर्मिनल विंडो या कुछ भी प्रभावित नहीं करेगा, लेकिन यह सुविधाजनक है।


काम नहीं किया। अभी भी: गूंज $ शेल / usr / bin / zsh
Ses

8

अपना टर्मिनल खोलें और निम्नलिखित कमांड का उपयोग करें:

chsh -s $(which bash)

मुझे लगता है कि यह
chsh

2
which bashका पूर्ण मार्ग देना होगा bash, तो यह वही होगा /bin/bashजहाँ bashपर स्थित था।
रैंजडिलन

0

मैक ओएस कैटालिना पर

  1. Zsh में बदलें:

    chsh -s /bin/zsh
  2. बैश में बदलें:

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