क्या Zsh में कुछ भी है .bash_profile?


94

हर बार जब मैं टर्मिनल खोलता हूं, तो मुझे .bash_profileसक्षम करने के लिए स्रोत होना चाहिए$JAVA_HOME या अन्य चर ।


1
हाँ, क्या यह स्वचालित रूप से हर बार टर्मिनल खुलने पर खट्टा हो जाता है?
३.वंग्वनी

जवाबों:


116

हाँ, यह कहा जाता है ~/.zshenv

यहां बताया गया है कि मैंने इसमें कैसे $JAVA_HOMEसेट किया है ~/.zshenv:

export JAVA_HOME="$(/usr/libexec/java_home)"

हालांकि, ध्यान रखें, कि zsh बैश नहीं है , इसलिए सिर्फ 'कारण' है कि आपके पास .bash_profileहर बार जब आप एक टर्मिनल खोलते हैं, तो इसका मतलब यह नहीं है कि आपको zsh के साथ ऐसा करना होगा। Zsh के साथ, मुझे केवल तभी पुन: स्रोत करना होगा ~/.zshenv जब मैं इसमें परिवर्तन करता हूं , और उसके बाद केवल उन टर्मिनलों के लिए जो पहले से ही खुले हैं : नए टर्मिनलों को पहले से ही मेरे नए और बेहतर बनाने चाहिए ~/.zshenv

ध्यान दें

मुझे अक्सर यह मददगार लगता है, जब यह निर्धारित करने की कोशिश की जाती है कि मुझे अपने zsh स्टार्टअप फाइलों में से कौन सी चीजें zsh स्टार्टअप फाइलों से परामर्श करने के लिए रखनी चाहिए ।


17
वास्तव में, .zprofileअर्थ के करीब है .bash_profile, इसमें दोनों को केवल उनके गोले के लिए लॉगिन गोले के द्वारा खट्टा किया गया है। .zshenvके सभी उदाहरणों के लिए निष्पादित किया जाता है zsh, चाहे वे लॉगिन गोले हों या न हों।
चेपनर

6
@chepner .zshenvवह जगह है जहां सभी पर्यावरण चर को परिभाषित किया जाना चाहिए। यहां
एलेक्सज मगुरा

3
माना; क्या करना है और एक साथ के .bash_profileलिए bashक्या करना है । यह लिंक इस बात की अच्छी जानकारी प्रदान करता है कि कहाँ जाना चाहिए। .zshenv.zprofile/.zloginzsh
चेपनर

PATHमें परिभाषित करने के साथ @Alexej समस्या .zshenvयह है कि बाद में इसे ओवरराइड किया जा सकता है, कहो /etc/profile; PATH चर को .zshenv या .zshrc में देखें ।
13

37

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मैंने हाल ही में मैकओ को कैटालिना में अपग्रेड किया है, जिसने डिफ़ॉल्ट शेल को बैश से बदलकर zsh कर दिया है।

मैंने यह करना समाप्त कर दिया:

 echo source ~/.bash_profile > ~/.zshenv && source ~/.zshenv

Zsh स्रोत के लिए मेरा मूल .bash_profile है।


11
यह सुनिश्चित करने के लिए कमांड का उपयोग करें कि फ़ाइल उपयोगकर्ताओं के होम डायरेक्टरी में बनाई गई है:echo source ~/.bash_profile > ~/.zshenv
स्माइर

क्या यहाँ का उपयोग echoमहत्वपूर्ण है? वह क्या करता है?
21

3
@QASam, इको एक चाहिए यहाँ, X > Yकेवल उत्तीर्ण एक्स क्या है। गूंज के बिना, कुछ भी आउटपुट नहीं है।
जेम्स लवलेडी

3

हाल ही में मैक से कैटालिना ओएस के उन्नयन के साथ, यह Z शेल को बदलने के लिए डिफ़ॉल्ट रूप से बदल जाता है जो zshrc फ़ाइल को Z-shell संसाधन के रूप में उपयोग करता है, हमारे पास आमतौर पर उपयोगकर्ता घर निर्देशिका के अंदर bash_profile था समाधान बस करना है

  1. > vim ~ / .bash_profile खोलकर bash_profile से सामग्री की प्रतिलिपि बनाएँ
  2. zshrc by> vim ~ / .zshrc बनाएं
  3. bash_profile सामग्री को zsrc में कॉपी करें

एक नई टर्मिनल विंडो खोलें और अपने पिछले उपनाम / स्क्रिप्ट को चलाने के लिए निर्दोष काम करना चाहिए


2

अपने .bash_profile का उपयोग जारी रखने के लिए अन्य सरल विकल्प इस फ़ाइल को आपकी .zshrc फ़ाइल में जोड़ें।

  1. अपनी .zhsrc फ़ाइल> vim ~ / .zshrc खोलें
  2. इस लाइन को अपनी .zshrc फ़ाइल> स्रोत ~ / .bash_profile में जोड़ें

इस सरल समाधान के साथ आप अपने .bash_prifile को जोड़ना जारी रख सकते हैं यदि आपको zhs पसंद हैं।

जोड़ना .bash_profile


क्या बैश और zsh के बीच कुछ अंतर हो सकता है जिसके कारण bash_profile ठीक से शुरू नहीं होता है? zsh.sourceforge.net/FAQ/zshfaq02.html#l14
framontb

0

मैक कैटालिना में, टर्मिनल zsh का उपयोग करता है। इसके बजाय .bash_profile, .zshenv करने के लिए अच्छा है और वहाँ अपनी स्क्रिप्ट लिखें।

जब आप अगली बार हर बार टर्मिनल खोलते हैं, तो .zshenv के अंदर स्क्रिप्ट निष्पादित हो जाती हैं।

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