perintah tidak ditemukan di zsh


138

Saya menggunakan z Shell ( zsh) alih-alih bash default, dan sesuatu yang salah terjadi sehingga semua perintah yang dulu berfungsi tidak lagi dikenali:

ls
zsh: command not found: ls

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

Saya tidak tahu cara mengatur ulang zshatau cara memperbaikinya. Berikut ini isi dari $PATHvariabel:

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

Saya tidak bisa membuka .bash_profilefile atau .zshrcfile, sepertinya satu-satunya solusi adalah mengatur ulang zsh. Ada ide?

EDIT:

Saya bahkan mencoba mengatur ulang zshseperti yang ditunjukkan di utas ini , tetapi selalu mendapat command not foundkesalahan:

exec zsh
zsh: command not found: zsh

jadi apa yang terjadi? mengapa semua perintah hilang?

Jawaban:


218

Jelaslah bahwa Anda telah berhasil mengacaukan PATHvariabel Anda . (Saat ini Anda PATHtidak mengandung lokasi di mana utilitas umum berada.)

Mencoba:

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

Atau, untuk "mengatur ulang" zsh, tentukan path lengkap ke shell:

exec /bin/zsh

atau

exec /usr/bin/zsh

17
Ketika saya memutakhirkan ke Catalina saya beralih ke zsh shell dan itu mengacaukan jalan saya ke titik di mana saya tidak bisa menjalankan aplikasi pihak ketiga yang saya gunakan. Saya hanya perlu memodifikasi file .zshrc dan menambahkan "export PATH = << lokasi tempat sampah saya >>" dan melakukan exec / bin / zsh dan semuanya baik-baik saja.
Robert Walters

18

Dalam file config ~ / .zsh Anda sertakan path ke file bash path Anda yang berisi alias. Dalam kasus saya itu termasuk baris "source ~ / .bash_profile" di dalam ~ / .zsh.


1
Terima kasih banyak, itu menyelesaikannya untuk saya. Saya punya masalah setelah memutakhirkan ke Catalina dan dan beralih ke zsh shell.
neiya

1
Saya tidak punya ~/.zshfile. Sebaliknya saya harus memasukkannya ke dalam /etc/zshrc.
Chase Roberts

14
  1. Gunakan editor teks yang baik seperti VS Code dan buka .zshrcfile Anda (harus ada di direktori home Anda. Jika Anda tidak melihatnya, pastikan untuk mengklik kanan di folder file ketika membuka dan memilih opsi untuk 'menampilkan file yang tersembunyi') .

  2. temukan di mana ia menyatakan: export PATH=a-bunch-of-paths-separated-by-colons:

  3. masukkan ini di akhir baris, sebelum kutipan akhir: :$HOME/.local/bin

Dan itu seharusnya bekerja untuk Anda.

Anda dapat menguji apakah ini akan berhasil lebih dulu dengan mengetik ini di terminal Anda terlebih dahulu: export PATH=$HOME/.local/bin:$PATH

Jika kesalahan hilang setelah Anda mengetik ini ke terminal dan terminal Anda berfungsi secara normal, solusi di atas akan berfungsi. Jika tidak, Anda harus menemukan folder tempat kesalahan referensi Anda berada (yang tidak ditemukan), dan ganti PATH di atas dengan PATH-TO-THAT-FOLDER.


Aha, di situlah letak kesalahan saya yang menyebabkan zsh tampaknya "mengabaikan" PATHpengaturan saya . Dari bash, saya terbiasa dengan awalan direktori di dalam folder rumah saya ~. Jadi ternyata untuk zsh saya seharusnya menggunakan $HOMEvariabel, seperti pada contoh Anda.
lalilulelost

7

Anda dapat membuat symlink di / usr / local / bin /

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

Terima kasih banyak. Saya mengalami masalah dan jawaban ini membuat saya sadar bahwa saya tidak menggunakan $HOMEdan menyediakan jalur relatif. Menggunakan path lengkap dengan $HOMEmemperbaiki masalah saya.
tasomaniac

+1 untuk banyak kasus penggunaan sederhana: Menambahkan symlink adalah cara yang harus dilakukan jika Anda hanya ingin menambahkan satu yang dapat dieksekusi. Jika Anda ingin mengelola beberapa executable di folder baru, maka menambahkan ke $PATHlebih baik dalam hal penggunaan itu.
David Bodow


4

Saya memperbaiki masalah ini dengan membuka tab umum preferensi terminal dan mengubah Command (path lengkap) /bin/bashke default dan kemudian mengedit ~/.zshrcfile.

masukkan deskripsi gambar di sini

export PATH="all your path inside the quotes"

... tanpa spasi kosong di antara PATH="dan simpan file.

masukkan deskripsi gambar di sini

Setelah menyimpan file, ubah /bin/zshperintah Anda atau pilih default masukkan deskripsi gambar di sini

... dan nyalakan kembali terminal dan Anda seharusnya membuat zsh shell Anda bekerja lagi!


4

Jika Anda menyukai saya, Anda akan memiliki dua aplikasi terminal, satu adalah terminal default dengan bash sebagai shell default dan iTerm 2 lainnya dengan zsh sebagai shellnya. Untuk memiliki perintah dan zsh di iTerm 2 dari bash, Anda perlu melakukan hal berikut:

Pada iTerm 2, buka preferensi (atau perintah,). Lalu pergi ke tab profil dan turun ke perintah . Seperti yang Anda lihat pada gambar di bawah, Anda perlu memilih opsi perintah dan menempelkan path zsh shell (untuk menemukan path, Anda dapat melakukannya which zsh).

masukkan deskripsi gambar di sini

Pada titik ini Anda akan memiliki zsh sebagai shell default Anda HANYA untuk iTerm 2 dan Anda akan memiliki bash sebagai shell default global pada aplikasi terminal mac default. Selanjutnya, kami masih melewatkan perintah dari bash di zsh. Jadi untuk melakukan ini, Anda harus menjalankan bash Anda (di mana Anda memiliki perintah Anda bekerja) dan mendapatkan variabel PATH dari env (gunakan perintah ini untuk melakukan itu env | grep PATH:).

Setelah Anda memilikinya, buka iTerm 2 Anda dan tempel jalur Anda pada opsi "kirim teks saat mulai".

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

Buka kembali iTerm 2 dan kita selesai!


Alasan mengapa kami menambahkan ekspor ke "Kirim teks saat mulai" adalah karena alasan seseorang, jalur selalu disetel ulang menjadi seperti sebelumnya setiap kali saya membuka kembali iTerm 2. Jadi ini adalah cara yang baik untuk memperbaikinya.
Kamil B

3

Solusi saya:

Ubah kembali ke bash:

source .bashrc

lanjut:

echo $PATH

salin ini:

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

kembali ke zsh:

source .zsh

buka .zshrc:

dan tempel:

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

restart terminal


1

Dalam kasus saya, secara tidak sengaja kode yang dikomentari tidak ditulis pada baris pertama.

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

Hash telah dihapus. Setelah menambahkannya kembali berfungsi dengan baik.

Saya baru saja memposting ini di sini sehingga seseorang mungkin menganggap ini berguna. Karena ini baru memulai dari baris dan mungkin dihapus karena kesalahan seperti yang telah saya lakukan. Dan sepertinya tidak ada solusi setelah mencoba beberapa cara.


1

Solusi terbaik bekerja untuk saya untuk jalur perubahan permanen

Buka Finder-> buka folder / Users / / usr / local / bin

buka .zshrc dengan TextEdit

.zshrc adalah file tersembunyi jadi sembunyikan dengan perintah + shift +. tekan

hapus konten dan jenis file

ekspor PATH = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

dan simpan

sekarang

zsh: perintah tidak ditemukan Hilang



0

Seperti yang orang lain katakan, cukup me-restart terminal setelah Anda membuat perubahan harus mengatur ulang dan perubahan yang Anda buat pada file ~ / .zshrc Anda. Misalnya setelah menambahkan fungsi untuk membuka studio visual:

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
}

Saya dapat menggunakan kode kata kunci untuk membuka program dari baris perintah.


0

Cara untuk mengedit file .zshrc tanpa melakukannya melalui iTerm2 atau Terminal asli di macOS adalah dengan menggunakan terminal di aplikasi lain. Sebagai contoh, saya menggunakan terminal sebagai bagian dari VSCode dan dapat menemukan dan mengedit file.


-1

Copot dan pasang kembali zsh bekerja untuk saya:

sudo yum remove zsh
sudo yum install -y zsh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.