lệnh không tìm thấy trên zsh


138

Tôi đang sử dụng z Shell ( zsh) thay vì bash mặc định và có lỗi xảy ra để tất cả các lệnh đã sử dụng để làm việc không còn được nhận ra:

ls
zsh: command not found: ls

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

Tôi không biết cách thiết lập lại zshhoặc cách khắc phục điều này. Đây là nội dung của $PATHbiến:

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

Tôi không thể mở .bash_profiletập tin cũng như .zshrctập tin, dường như giải pháp duy nhất là thiết lập lại zsh. Có ý kiến ​​gì không?

BIÊN TẬP:

Tôi thậm chí đã cố gắng thiết lập lại zshnhư được chỉ ra trong chủ đề này , nhưng luôn gặp command not foundlỗi:

exec zsh
zsh: command not found: zsh

vì vậy những gì đang xảy ra? Tại sao tất cả các lệnh bị mất?

Câu trả lời:


218

Rõ ràng là bạn đã quản lý để làm rối PATHbiến của bạn . (Hiện tại của bạn PATHkhông chứa bất kỳ vị trí nào có các tiện ích chung được đặt.)

Thử:

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

Ngoài ra, để "đặt lại" zsh, chỉ định đường dẫn đầy đủ đến trình bao:

exec /bin/zsh

hoặc là

exec /usr/bin/zsh

17
Khi tôi nâng cấp lên Catalina, tôi đã chuyển sang trình vỏ zsh và nó làm rối tung đường dẫn của tôi đến điểm mà tôi không thể thực hiện bất kỳ ứng dụng bên thứ ba nào tôi sử dụng. Tôi chỉ phải sửa đổi tệp .zshrc và thêm "export PATH = << vị trí các thùng của tôi >>" và đã thực hiện exec / bin / zsh và tất cả đều tốt.
Robert Walters

18

Trong tệp cấu hình ~ / .zsh của bạn bao gồm đường dẫn đến tệp đường dẫn bash chứa bí danh của bạn. Trong trường hợp của tôi, nó bao gồm dòng "source ~ / .bash_profile" bên trong ~ / .zsh.


1
Cảm ơn rất nhiều, nó đã giải quyết nó cho tôi. Tôi gặp vấn đề sau khi nâng cấp lên Catalina và chuyển sang zsh shell.
neiya

1
Tôi không có một ~/.zshtập tin. Thay vào đó tôi phải đặt nó vào /etc/zshrc.
Chase Roberts

14
  1. Sử dụng trình soạn thảo văn bản tốt như VS Code và mở .zshrctệp của bạn (nên có trong thư mục chính của bạn. Nếu bạn không thấy nó, hãy chắc chắn nhấp chuột phải vào thư mục tệp khi mở và chọn tùy chọn để 'hiển thị các tệp ẩn') .

  2. tìm nơi nó nói: export PATH=a-bunch-of-paths-separated-by-colons:

  3. chèn cái này ở cuối dòng, trước dấu ngoặc kép: :$HOME/.local/bin

Và nó sẽ làm việc cho bạn.

Bạn có thể kiểm tra xem cái này có hoạt động trước không bằng cách gõ cái này vào terminal của bạn trước: export PATH=$HOME/.local/bin:$PATH

Nếu lỗi biến mất sau khi bạn nhập vào thiết bị đầu cuối và thiết bị đầu cuối của bạn hoạt động bình thường, giải pháp trên sẽ hoạt động. Nếu không, bạn sẽ phải tìm thư mục chứa lỗi tham chiếu của bạn (điều không tìm thấy) và thay thế PATH ở trên bằng PATH-TO-THAT-FOLDER.


Aha, đó là lỗi của tôi khiến zsh dường như "phớt lờ" PATHthiết lập của tôi . Từ bash, tôi đã quen với tiền tố trong thư mục nhà của tôi với ~. Vì vậy, hóa ra zsh thay vào đó tôi nên sử dụng $HOMEbiến, như trong ví dụ của bạn.
lalilulelost

7

Bạn có thể tạo một liên kết tượng trưng trong / usr / local / bin /

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

Cảm ơn rất nhiều. Tôi đã gặp vấn đề và câu trả lời này khiến tôi nhận ra rằng tôi không sử dụng $HOMEvà cung cấp một đường dẫn tương đối. Sử dụng đường dẫn đầy đủ với $HOMEcố định vấn đề của tôi.
tasomaniac

+1 cho nhiều trường hợp sử dụng đơn giản: Thêm một liên kết tượng trưng là cách tốt nhất nếu bạn chỉ muốn thêm một tệp thực thi. Nếu bạn đang tìm cách quản lý nhiều tệp thực thi trong một thư mục mới, thì việc thêm vào $PATHsẽ tốt hơn trong trường hợp sử dụng đó.
David Bodow

4

Đối với tôi chỉ cần khởi động lại thiết bị đầu cuối của tôi dường như để khắc phục vấn đề.


4

Tôi đã khắc phục sự cố bằng cách mở tab chung ưu tiên thiết bị đầu cuối và thay đổi Lệnh (đường dẫn hoàn chỉnh) /bin/bashthành mặc định và sau đó chỉnh sửa ~/.zshrctệp.

nhập mô tả hình ảnh ở đây

export PATH="all your path inside the quotes"

... Không có bất kỳ khoảng trắng nào giữa PATH="và lưu tệp.

nhập mô tả hình ảnh ở đây

Sau khi lưu tệp, thay đổi /bin/zshtrong lệnh của bạn hoặc chọn mặc định nhập mô tả hình ảnh ở đây

... và khởi động lại thiết bị đầu cuối và bạn sẽ có vỏ zsh hoạt động trở lại!


4

Nếu bạn thích tôi, bạn sẽ có hai ứng dụng thiết bị đầu cuối, một là thiết bị đầu cuối mặc định với bash là shell mặc định và một iTerm 2 khác với zsh là vỏ của nó. Để có cả lệnh và zsh trong iTerm 2 từ bash, bạn cần làm như sau:

Trên iTerm 2, đi đến tùy chọn (hoặc lệnh,). Sau đó vào tab hồ sơ và đi xuống lệnh . Như bạn có thể thấy trên hình dưới đây, bạn cần chọn tùy chọn lệnh và dán đường dẫn của vỏ zsh (để tìm đường dẫn, bạn có thể làm which zsh).

nhập mô tả hình ảnh ở đây

Tại thời điểm này, bạn sẽ có zsh làm shell mặc định CHỈ cho iTerm 2 và bạn sẽ có bash là shell mặc định toàn cầu trên ứng dụng thiết bị đầu cuối mac mặc định. Tiếp theo, chúng tôi vẫn còn thiếu các lệnh từ bash trong zsh. Vì vậy, để làm điều này, bạn cần phải thực hiện bash của mình (nơi bạn có các lệnh của mình hoạt động) và lấy biến PATH từ env (sử dụng lệnh này để làm điều đó:env | grep PATH :).

Khi bạn đã có điều đó, hãy truy cập iTerm 2 của bạn và dán đường dẫn của bạn vào tùy chọn "gửi văn bản khi bắt đầu".

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

Chỉ cần mở lại iTerm 2 và chúng tôi đã hoàn tất!


Lý do tại sao chúng tôi đã thêm bản xuất vào "Gửi văn bản khi bắt đầu" là vì một người nào đó cho tôi, đường dẫn luôn được đặt lại như trước khi tôi mở lại iTerm 2. Vì vậy, đây là một cách hay để sửa nó.
Kamil B

3

Giải pháp của tôi:

Thay đổi trở lại bash:

source .bashrc

kế tiếp:

echo $PATH

sao chép cái này:

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

trở lại zsh:

source .zsh

mở .zshrc :

và dán:

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

khởi động lại thiết bị đầu cuối


1

Trong trường hợp của tôi, đó là do nhầm lẫn mã nhận xét đã không bị lỗi ở dòng đầu tiên.

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

Băm đã được gỡ bỏ. Sau khi thêm nó hoạt động tốt.

Tôi chỉ đăng bài này ở đây để ai đó có thể thấy điều này hữu ích. Bởi vì nó chỉ là bắt đầu của dòng và có thể bị xóa do nhầm lẫn như tôi đã làm. Và dường như không có giải pháp nào sau khi thử nhiều cách.


1

Giải pháp tốt nhất cho tôi cho con đường thay đổi vĩnh viễn

Mở Finder-> đi đến thư mục / Người dùng / / usr / local / bin

mở .zshrc với TextEdit

.zshrc là tập tin ẩn nên bỏ ẩn nó bằng lệnh + shift +. nhấn

xóa nội dung tập tin và loại

xuất PATH = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

và lưu

hiện nay

zsh: lệnh không tìm thấy Đã qua


0

Khởi động lại thiết bị đầu cuối cũng thực hiện các mẹo cho tôi.


0

Như những người khác đã nói, chỉ cần khởi động lại thiết bị đầu cuối sau khi bạn thực hiện các thay đổi sẽ đặt lại và các thay đổi bạn đã thực hiện đối với tệp ~ / .zshrc của mình. Ví dụ, sau khi thêm chức năng để mở studio trực quan:

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
}

Tôi đã có thể sử dụng mã từ khóa để mở chương trình từ dòng lệnh.


0

Một cách để chỉnh sửa tệp .zshrc mà không cần thực hiện thông qua iTerm2 hoặc Terminal gốc trên macOS là sử dụng thiết bị đầu cuối trong một ứng dụng khác. Ví dụ, tôi đã sử dụng thiết bị đầu cuối như một phần của VSCode và có thể tìm và chỉnh sửa tệp.


-1

Gỡ cài đặt và cài đặt lại zsh làm việc cho tôi:

sudo yum remove zsh
sudo yum install -y zsh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.