आदेश zsh पर नहीं मिले


138

मैं zshडिफ़ॉल्ट बैश के बजाय z शेल ( ) का उपयोग कर रहा हूं , और कुछ गलत हुआ है ताकि सभी कमांड जो काम करते थे, अब नहीं हैं:

ls
zsh: command not found: ls

open -e .zshrc
zsh: correct 'open' to '_open' [nyae]? 

मुझे नहीं पता कि इसे कैसे रीसेट करना है zshया कैसे ठीक करना है। यहाँ $PATHचर की सामग्री है :

echo $PATH
/Users/Malloc/bin/Sencha/Cmd/3.1.2.342:/usr/local/bin/mate

मैं .bash_profileफ़ाइल या .zshrcफ़ाइल नहीं खोल सकता , लगता है कि एकमात्र समाधान रीसेट करना है zsh। कोई विचार?

संपादित करें:

मैंने भी इस धागेzsh में संकेत के अनुसार रीसेट करने की कोशिश की , लेकिन हमेशा त्रुटि मिली :command not found

exec zsh
zsh: command not found: zsh

तो क्या हो रहा है? क्यों सभी आदेश खो गए हैं?

जवाबों:


218

यह स्पष्ट है कि आप अपने PATHचर को गड़बड़ाने में कामयाब रहे हैं । (आपके वर्तमान PATHमें कोई भी स्थान शामिल नहीं है जहाँ सामान्य सुविधाएं स्थित हैं।)

प्रयत्न:

PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
export PATH

वैकल्पिक रूप से, "रीसेट" zsh के लिए, शेल को पूरा पथ निर्दिष्ट करें:

exec /bin/zsh

या

exec /usr/bin/zsh

17
जब मैं कैटालिना में अपग्रेड हुआ तो मैं zsh शेल में चला गया और इसने मेरे रास्तों को गड़बड़ कर दिया, जहां मैं किसी भी तीसरे पक्ष के ऐप्स को निष्पादित नहीं कर सका जो मैं उपयोग करता हूं। मुझे बस .zshrc फ़ाइल को संशोधित करना था और "निर्यात पेट = << मेरे डिब्बे का स्थान >>" जोड़ना था और निष्पादन / बिन / zsh किया और सब अच्छा था।
रॉबर्ट वाल्टर्स

18

आपकी ~ / .zsh कॉन्फ़िग फ़ाइल में आपके बैश पथ फ़ाइल में पथ शामिल होता है जिसमें आपके उपनाम होते हैं। मेरे मामले में यह ~ / .zsh के अंदर "स्रोत ~ / .bash_profile" लाइन सहित था।


1
बहुत बहुत धन्यवाद, इसने मेरे लिए इसे हल किया। मुझे कैटालिना में अपग्रेड करने के बाद समस्या हुई और zsh शेल में बदल गया।
नीया

1
मेरे पास ~/.zshफाइल नहीं है । इसके बजाय मुझे इसे अंदर करना पड़ा /etc/zshrc
रॉबर्ट्स

14
  1. VS कोड जैसे एक अच्छे टेक्स्ट एडिटर का उपयोग करें और अपनी .zshrcफ़ाइल खोलें (अपने होम डायरेक्टरी में होना चाहिए। यदि आप इसे नहीं देखते हैं, तो खोलते समय फ़ाइल फ़ोल्डर में राइट-क्लिक करना सुनिश्चित करें और 'छुपी हुई फ़ाइलें दिखाने के लिए' विकल्प चुनें) ।

  2. यह कहां खोजें: export PATH=a-bunch-of-paths-separated-by-colons:

  3. पंक्ति के अंत में, अंत-उद्धरण से पहले इसे डालें: :$HOME/.local/bin

और यह आपके लिए काम करना चाहिए।

आप परीक्षण कर सकते हैं कि क्या यह आपके टर्मिनल में पहले टाइप करके काम करेगा: export PATH=$HOME/.local/bin:$PATH

यदि टर्मिनल में यह टाइप करने के बाद त्रुटि गायब हो जाती है और आपके टर्मिनल सामान्य रूप से कार्य करते हैं, तो उपरोक्त समाधान काम करेगा। यदि ऐसा नहीं होता है, तो आपको उस फ़ोल्डर को ढूंढना होगा जहां आपकी संदर्भ त्रुटि स्थित है (पाया नहीं गया), और ऊपर दिए गए पैट को पैथ-टू-थॉट-फोल्डर से बदल दें।


अहा, इसमें मेरी गलती है जिसने zsh को स्पष्ट रूप से मेरी PATHसेटिंग को "अनदेखा" करने का नेतृत्व किया । बैश से, मुझे अपने होम फोल्डर के अंदर निर्देशिकाओं को प्रीफ़िक्स करने की आदत थी ~। तो यह zsh के लिए निकलता है मुझे इसके बजाय $HOMEचर का उपयोग करना चाहिए , जैसे आपके उदाहरण में।
लालिलुलेलोस्ट

7

आप / usr / लोकल / बिन / में एक सिमलिंक बना सकते हैं

sudo ln -s $HOME/.composer/vendor/bin/homestead /usr/local/bin/homestead

बहुत बहुत धन्यवाद। मुझे समस्याएँ हो रही थीं और इस जवाब ने मुझे एहसास दिलाया कि मैं $HOMEएक रिश्तेदार मार्ग का उपयोग और प्रदान नहीं कर रहा था । $HOMEतय मेरी समस्या के साथ पूर्ण पथ का उपयोग करना ।
तस्मानी

कई सरल उपयोग के मामलों के लिए +1: सिमिलर जोड़ना एक ऐसा तरीका है जब आप केवल एक निष्पादन योग्य जोड़ना चाहते हैं। यदि आप एक नए फ़ोल्डर में कई निष्पादन योग्य प्रबंधन करना चाहते हैं, तो $PATHउस उपयोग के मामले में बेहतर है।
डेविड बोडो

4

मेरे लिए बस अपने टर्मिनल को पुनः आरंभ करने से समस्या ठीक होती दिख रही थी।


4

मैंने टर्मिनल प्राथमिकता सामान्य टैब खोलकर /bin/bashऔर ~/.zshrcफ़ाइल को डिफ़ॉल्ट रूप से संपादित करने के लिए कमांड (पूर्ण पथ) को बदलकर समस्या को ठीक किया ।

यहाँ छवि विवरण दर्ज करें

export PATH="all your path inside the quotes"

... बिना किसी व्हाट्सएप के PATH="और फाइल को सेव करने के।

यहाँ छवि विवरण दर्ज करें

फ़ाइल को सहेजने के बाद, /bin/zshअपने कमांड में बदलें या डिफ़ॉल्ट चुनें यहाँ छवि विवरण दर्ज करें

... और टर्मिनल को फिर से शुरू करें और आपके पास अपना zsh शेल फिर से काम करना चाहिए!


4

यदि आप मुझे पसंद करते हैं, तो आपके पास दो टर्मिनल ऐप होंगे, एक है डिफ़ॉल्ट टर्मिनल जो बैश के साथ डिफॉल्ट शेल और दूसरा आईटर्म 2 इसके शेल के रूप में है। बश से iTerm 2 में दोनों कमांड और zsh होने के लिए, आपको निम्न कार्य करने की आवश्यकता है:

ITerm 2 पर, वरीयताओं (या कमांड) पर जाएं। फिर प्रोफाइल टैब पर जाएं और कमांड करने के लिए नीचे जाएं । जैसा कि आप नीचे दिए गए चित्र पर देख सकते हैं, आपको कमांड विकल्प का चयन करना होगा और zsh शेल के पेस्ट पथ (पथ को खोजने के लिए, आप कर सकते हैं which zsh)।

यहाँ छवि विवरण दर्ज करें

इस बिंदु पर आपके पास zsh आपके डिफ़ॉल्ट शेल के रूप में केवल iTerm 2 के लिए होगा और आपके पास डिफ़ॉल्ट मैक टर्मिनल ऐप पर वैश्विक डिफ़ॉल्ट शेल के रूप में बैश होगा। अगला, हम अभी भी zsh में बैश से कमांड को याद कर रहे हैं। तो ऐसा करने के लिए, आपको अपने bash (जहां आपके पास अपने कमांड काम कर रहे हैं) पर जाने की ज़रूरत है और env से पैथ वेरिएबल प्राप्त करें (ऐसा करने के लिए इस कमांड का उपयोग करें:env | grep PATH

एक बार जब आप ऐसा कर लेते हैं, तो अपने iTerm 2 पर जाएं और "टेक्स्ट एट स्टार्ट" विकल्प पर अपना रास्ता पेस्ट करें।

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin && clear

बस iTerm 2 को फिर से खोलें और हम कर रहे हैं!


जिस कारण हमने निर्यात को "प्रारंभ में पाठ भेजें" में जोड़ा है, वह यह है कि मेरे लिए किसी कारण से, मार्ग हमेशा रीसेट हो जाता है जब भी मैंने iTerm को फिर से खोल दिया था 2. तब यह ठीक करने का एक अच्छा तरीका है।
कामिल बी।

3

मेरा समाधान:

इसे वापस बदलें bash:

source .bashrc

आगे:

echo $PATH

इसे कॉपी करें:

/home/frank/.asdf/shims:/home/frank/....

पर वापस जाएँ zsh:

source .zsh

खुला .zshrc:

और पेस्ट:

 export PATH=/home/frank/.asdf/shims:/home/frank/....

टर्मिनल को पुनरारंभ करें


1

मेरे मामले में, यह गलती से टिप्पणी की गई कोड पहली पंक्ति में अनलॉक्ड था।

# If you come from bash you might have to change your $PATH.

हैश को हटा दिया गया था। इसे वापस जोड़ने के बाद ठीक काम किया।

मैंने अभी इसे यहाँ पोस्ट किया है ताकि किसी को यह मददगार लगे। क्योंकि यह सिर्फ लाइन की शुरुआत है और गलती से डिलीट हो सकती है जैसे मैंने किया था। और लगता है कि कई तरीकों की कोशिश करने के बाद भी कोई समाधान नहीं है।


1

स्थायी परिवर्तन पथ के लिए मेरे लिए सबसे अच्छा समाधान कार्य

खोजक खोलें-> फ़ोल्डर / उपयोगकर्ता / usr / स्थानीय / बिन पर जाएं

Textzdit के साथ .zshrc खोलें

.zshrc फ़ाइल छिपी हुई है इसलिए इसे कमांड + शिफ्ट + द्वारा अनहाइड करें। दबाएँ

फ़ाइल सामग्री और प्रकार हटाएं

निर्यात पथ = ~ / usr / बिन: / बिन: / usr / sbin: / sbin: $ PATH

और बचाओ

अभी

zsh: कमांड नहीं मिला



0

जैसा कि दूसरों ने कहा है, आपके द्वारा परिवर्तन किए जाने के बाद बस टर्मिनल को फिर से शुरू करना चाहिए और आपने अपनी ~ / .zshrc फ़ाइल में किए गए परिवर्तनों को रीसेट कर देना चाहिए। उदाहरण के लिए दृश्य स्टूडियो खोलने के लिए फ़ंक्शन जोड़ने के बाद:

function code {  
    if [[ $# = 0 ]]
    then
        open -a "Visual Studio Code"
    else
        local argPath="$1"
        [[ $1 = /* ]] && argPath="$1" || argPath="$PWD/${1#./}"
        open -a "Visual Studio Code" "$argPath"
    fi
}

मैं कमांड लाइन से प्रोग्राम खोलने के लिए कीवर्ड कोड का उपयोग करने में सक्षम था।


0

मैकस्मर पर iTerm2 या देशी टर्मिनल के माध्यम से .zshrc फ़ाइल को संपादित करने का एक तरीका दूसरे अनुप्रयोग में टर्मिनल का उपयोग करना है। उदाहरण के लिए, मैंने VSCode के भाग के रूप में टर्मिनल का उपयोग किया और फ़ाइल को खोजने और संपादित करने में सक्षम था।


-1

स्थापना रद्द करें और मेरे लिए काम करने वाले zsh को पुनर्स्थापित करें:

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