在zsh上找不到命令


138

我使用的是z Shell(zsh)而不是默认的bash,并且发生了一些错误,因此不再识别所有曾经工作的命令:

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

发生什么了?为什么所有命令都丢失了?

Answers:


218

显然,您已经设法弄乱了PATH变量。(您的当前PATH位置不包含公用程序所在的任何位置。)

尝试:

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

另外,对于“重置” zsh,请指定shell的完整路径:

exec /bin/zsh

要么

exec /usr/bin/zsh

16
当我升级到Catalina时,我切换到了zsh shell,这使我的路径混乱到无法执行我使用的任何第三方应用程序的地步。我只需要修改.zshrc文件并添加“ export PATH = <<我的箱的位置>>”,然后执行exec / bin / zsh,一切都很好。
罗伯特·沃尔特斯

18

在〜/ .zsh配置文件中,包含包含别名的bash路径文件的路径。在我的情况下,它在〜/ .zsh内包含“ source〜/ .bash_profile”行。


1
非常感谢,它为我解决了问题。升级到Catalina后,我遇到了问题,并切换到zsh shell。
neiya

1
我没有~/.zsh档案。相反,我不得不把它放进去/etc/zshrc
Chase Roberts

14
  1. 使用VS Code这样的文本编辑器打开.zshrc文件(应该在您的主目录中。如果看不到它,请确保在打开时右键单击该文件夹,然后选择“显示隐藏的文件”选项) 。

  2. 找到它指出的地方: export PATH=a-bunch-of-paths-separated-by-colons:

  3. 将其插入到行尾的引号之前: :$HOME/.local/bin

它应该为您工作。

您可以通过首先在终端中键入以下内容来测试它是否首先起作用: export PATH=$HOME/.local/bin:$PATH

如果在终端上键入错误后该错误消失并且终端正常运行,则上述解决方案将起作用。如果没有,则必须找到参考错误所在的文件夹(找不到的东西),然后用PATH-TO-THAT-FOLDER替换上面的PATH。


啊哈,这是我的错误,导致zsh显然“忽略”了我的PATH设置。从bash开始,我习惯于在主文件夹中的目录前面加上~。因此对于zsh来说,我应该改为使用$HOME变量,如您的示例中所示。
lalilulelost,

7

您可以在/ usr / local / bin /中创建符号链接

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

非常感谢。我遇到了问题,这个答案使我意识到我没有使用$HOME并提供相对路径。使用完整路径$HOME解决了我的问题。
tasomaniac

对于许多简单的用例,+ 1:如果您只是想添加一个可执行文件,那么添加符号链接是一种方法。如果您要在一个新文件夹中管理多个可执行文件,则$PATH在该用例中添加更好。
David Bodow


4

我通过打开终端首选项常规选项卡并将Command(完整路径)更改/bin/bash为默认值,然后编辑~/.zshrc文件来解决此问题。

在此处输入图片说明

export PATH="all your path inside the quotes"

...之间没有任何空格,PATH="并保存文件。

在此处输入图片说明

保存文件后,更改/bin/zsh命令或选择默认值 在此处输入图片说明

...然后重新启动终端,您应该让zsh shell重新工作!


4

如果喜欢我,您将有两个终端程序应用程序,一个是bash作为默认外壳的默认终端,另一个是zsh作为外壳的iTerm 2。要从bash在iTerm 2中同时包含命令和zsh,您需要执行以下操作:

在iTerm 2上,转到首选项(或命令)。然后转到“ 概要文件”选项卡,然后转到command。如下图所示,您需要选择命令选项并粘贴zsh shell的路径(要找到路径,可以执行which zsh)。

在此处输入图片说明

此时,仅iTerm 2会将zsh用作默认外壳,而将默认Mac终端应用程序上的bash用作全局默认外壳。接下来,我们仍然缺少zsh中bash的命令。因此,要执行此操作,您需要继续进行操作(在其中运行命令),并从env获取PATH变量(使用此命令来执行此操作:)env | grep PATH

完成后,转到iTerm 2,然后将路径粘贴到“在开始时发送文本”选项上。

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

只需重新打开iTerm 2,我们就完成了!


我们将导出添加到“在开始时发送文本”的原因是,由于某种原因,无论何时我重新打开iTerm 2,该路径始终重置为之前的状态。因此,这是修复它的一种不错的方法。
卡米尔B

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.

哈希已删除。添加回来后效果很好。

我刚刚在这里发布了这个,所以有人可能会觉得有用。因为它只是该行的开始,并且可能像我一样被误删除。尝试了几种方法之后,似乎没有解决方案。



0

就像其他人所说的那样,只需在进行更改后重新启动终端即可重置并更改〜/ .zshrc文件。例如,在添加功能以打开Visual Studio之后:

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或macOS上的本机Terminal来编辑.zshrc文件的一种方法是在另一个应用程序中使用终端。例如,我将终端用作VSCode的一部分,并且能够查找和编辑文件。


0

永久变更之路对我而言是最佳解决方案

打开Finder->转到文件夹/ Users / / usr / local / bin

用TextEdit打开.zshrc

.zshrc是隐藏文件,因此可通过Command + Shift +取消隐藏。按

删除文件内容和类型

导出PATH =〜/ usr / bin:/ bin:/ usr / sbin:/ sbin:$ PATH

并保存

现在

zsh:找不到命令


-1

卸载并重新安装zsh对我有用:

sudo yum remove zsh
sudo yum install -y zsh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.