zsh'da bulunmayan komutlar


138

zshVarsayılan bash yerine z Shell ( ) kullanıyorum ve yanlış bir şey oluyor, böylece eskiden çalışan tüm komutlar artık tanınmıyor:

ls
zsh: command not found: ls

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

Bunu nasıl sıfırlayacağımı zshveya nasıl düzelteceğimi bilmiyorum . İşte $PATHdeğişkenin içeriği :

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

.bash_profileDosyayı veya .zshrcdosyayı açamıyorum, tek çözüm zsh. Herhangi bir fikir?

DÜZENLE:

Bu ileti dizisindezsh belirtildiği gibi sıfırlamayı bile denedim , ancak her zaman hata aldım :command not found

exec zsh
zsh: command not found: zsh

yani, ne oluyor? neden tüm komutlar kayboldu?

Yanıtlar:


218

PATHDeğişkeninizi bozmayı başardığınız açık . ( PATHAkımınız, ortak yardımcı programların bulunduğu herhangi bir konum içermiyor.)

Deneyin:

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

Alternatif olarak, zsh'yi "sıfırlamak" için, kabuğun tam yolunu belirtin:

exec /bin/zsh

veya

exec /usr/bin/zsh

17
Catalina'ya yükselttiğimde zsh kabuğuna geçtim ve kullandığım herhangi bir üçüncü taraf uygulamasını yürütemediğim noktaya kadar yollarımı bozdu. Sadece .zshrc dosyasını değiştirmek ve "export PATH = << bölmelerimin konumu >>" eklemek zorunda kaldım ve / bin / zsh komutunu yaptım ve her şey iyiydi.
Robert Walters

18

~ / .Zsh yapılandırma dosyanıza, takma adlarınızı içeren bash yolu dosyanızın yolunu ekleyin. Benim durumumda, ~ / .zsh içine "source ~ / .bash_profile" satırını ekliyordu.


1
Çok teşekkürler, benim için çözdü. Catalina'ya yükselttikten sonra sorun yaşadım ve zsh kabuğuna geçtim.
neiya

1
Dosyam yok ~/.zsh. Bunun yerine onu koymak zorunda kaldım /etc/zshrc.
Chase Roberts

14
  1. VS Code gibi iyi bir metin düzenleyici kullanın ve .zshrcdosyanızı açın (ana dizininizde olmalıdır. Görmüyorsanız, açarken dosya klasörüne sağ tıklayın ve 'gizli dosyaları göster' seçeneğini seçin) .

  2. nerede ifade ettiğini bulun: export PATH=a-bunch-of-paths-separated-by-colons:

  3. bunu satırın sonuna, alıntıdan önce ekleyin: :$HOME/.local/bin

Ve sizin için çalışmalı.

Önce bunu terminalinize yazarak bunun işe yarayıp yaramayacağını test edebilirsiniz: export PATH=$HOME/.local/bin:$PATH

Bunu terminale yazdıktan sonra hata kaybolursa ve terminaliniz normal şekilde çalışıyorsa, yukarıdaki çözüm çalışacaktır. Aksi takdirde, referans hatanızın bulunduğu klasörü bulmanız (şey bulunamadı) ve yukarıdaki PATH'i PATH-TO-THAT-FOLDER ile değiştirmeniz gerekir.


Aha, zsh'nin ayarımı görünüşte "görmezden gelmesine" neden olan hatam burada yatıyor PATH. Bash'den, ana klasörümdeki dizinlerin önekini ile ~. Dolayısıyla, zsh için $HOME, sizin örneğinizdeki gibi değişkeni kullanmalıyım .
lalilulelost

7

/ Usr / local / bin / dizininde bir symlink oluşturabilirsiniz.

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

Çok teşekkürler. Problemler yaşıyordum ve bu cevap $HOMEgöreceli bir yol kullanmadığımı ve sağlamadığımı anlamamı sağladı. Sorunumu $HOMEçözerek tam yolu kullanmak .
tasomaniac

Birçok basit kullanım durumu için +1: Yalnızca bir yürütülebilir dosya eklemek istiyorsanız, bir sembolik bağlantı eklemek gitmenin yoludur. Yeni bir klasörde birden çok yürütülebilir dosyayı yönetmek istiyorsanız $PATH, bu kullanım durumunda eklemek daha iyidir.
David Bodow


4

Terminal tercihi genel sekmesini açıp Komutu (tam yol) /bin/bashvarsayılan olarak değiştirip ardından ~/.zshrcdosyayı düzenleyerek sorunu çözdüm .

görüntü açıklamasını buraya girin

export PATH="all your path inside the quotes"

... arasında boşluk bırakmadan PATH="ve dosyayı kaydedin.

görüntü açıklamasını buraya girin

Dosyayı kaydettikten sonra /bin/zsh, komutunuzu değiştirin veya varsayılanı seçin görüntü açıklamasını buraya girin

... ve terminali yeniden başlattığınızda zsh kabuğunuzun yeniden çalışmasını sağlamalısınız!


4

Benden hoşlanıyorsanız, iki terminal uygulamanız olacak, biri varsayılan kabuk olarak bash olan varsayılan terminal ve kabuğu zsh olan başka bir iTerm 2. Bash'den iTerm 2'de hem komutlara hem de zsh'a sahip olmak için aşağıdakileri yapmanız gerekir:

İTerm 2'de tercihlere (veya komuta) gidin. Ardından profil sekmesine gidin ve komuta gidin . Aşağıdaki resimde görebileceğiniz gibi, komut seçeneğini seçmeniz ve zsh kabuğunun yolunu yapıştırmanız gerekir (yolu bulmak için yapabilirsiniz which zsh).

görüntü açıklamasını buraya girin

Bu noktada, zsh'yi SADECE iTerm 2 için varsayılan kabuğunuz olarak alacaksınız ve varsayılan mac terminal uygulamasında genel varsayılan kabuk olarak bash'e sahip olacaksınız. Daha sonra, zsh'daki bash komutlarını hala kaçırıyoruz. Bunu yapmak için, bash'ınıza gitmeniz (komutlarınızın çalıştığı yerde) ve PATH değişkenini env'den almanız gerekir (bunu yapmak için bu komutu kullanın:) env | grep PATH.

Bunu aldıktan sonra iTerm 2'nize gidin ve "başlangıçta metin gönder" seçeneğine yolunuzu yapıştırın.

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

Sadece iTerm 2'yi yeniden açın ve işimiz bitti!


Dışa aktarımı "Başlangıçta gönder" seçeneğine eklememizin nedeni, benim için bir nedenden ötürü, iTerm 2'yi her yeniden açtığımda yolun her zaman eskisine sıfırlanmasıdır. Bu, onu düzeltmenin güzel bir yoludur.
Kamil B

3

Çözümüm:

Şuna geri dön bash:

source .bashrc

Sonraki:

echo $PATH

bunu kopyala:

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

geri dön zsh:

source .zsh

.zshrc:

ve yapıştırın:

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

terminali yeniden başlat


1

Benim durumumda, yanlışlıkla yorumlanan kod ilk satırda yorumlanmamıştı.

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

Hash kaldırıldı. Geri ekledikten sonra iyi çalıştı.

Bunu biraz önce buraya gönderdim, böylece birisi bunu yararlı bulabilir. Çünkü bu sadece satırın başlangıcı ve benim yaptığım gibi yanlışlıkla silinebilir. Ve birkaç yolu denedikten sonra hiçbir çözüm yok gibi görünüyor.


1

Kalıcı değişim yolu için benim için en iyi çözüm çalışması

Finder'ı açın-> / Users / / usr / local / bin klasörüne gidin

TextEdit ile .zshrc'yi açın

.zshrc gizli bir dosyadır, bu nedenle command + shift + ile gösterin. basın

dosya içeriğini ve türünü sil

dışa aktarma PATH = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

ve kaydet

şimdi

zsh: komut bulunamadı Gitti



0

Başkalarının dediği gibi, değişiklikleri yaptıktan sonra terminali yeniden başlatmanız, sıfırlanmalı ve ~ / .zshrc dosyanızda yaptığınız değişiklikleri sıfırlamalıdır. Örneğin, görsel stüdyoyu açmak için işlev ekledikten sonra:

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
}

Programı komut satırından açmak için anahtar kelime kodunu kullanabildim.


0

MacOS'ta iTerm2 veya yerel Terminal aracılığıyla yapmadan .zshrc dosyasını düzenlemenin bir yolu, başka bir uygulamada bir terminal kullanmaktır. Örneğin, terminali VSCode'un bir parçası olarak kullandım ve dosyayı bulup düzenleyebildim.


-1

Zsh'yi kaldırın ve yeniden yükleyin benim için çalıştı:

sudo yum remove zsh
sudo yum install -y zsh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.