在 zsh 上找不到命令 [关闭]

Posted

技术标签:

【中文标题】在 zsh 上找不到命令 [关闭]【英文标题】:commands not found on zsh [closed] 【发布时间】:2013-08-28 00:18:35 【问题描述】:

我使用的是 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。有什么想法吗?

编辑:

我什至尝试按照this thread 中的指示重置zsh,但总是收到command not found 错误:

exec zsh
zsh: command not found: zsh

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

【问题讨论】:

【参考方案1】:

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

试试:

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

或者,对于“重置”zsh,指定 shell 的完整路径:

exec /bin/zsh

exec /usr/bin/zsh

【讨论】:

当我升级到 Catalina 时,我切换到了 zsh shell,它把我的路径弄乱了,以至于我无法执行我使用的任何第三方应用程序。我只需要修改 .zshrc 文件并添加“export PATH=>”并执行 exec /bin/zsh,一切都很好。 @devnull @Robert Walters 我试试你的答案,但是当我尝试访问任何东西时我仍然得到zsh command not found,有没有其他方法可以解决这个问题 @uyhaW FWIW,我刚刚在我的 zshell 环境中运行了bash 命令,(所以它切换到了 bash)打开了我的.bash_profile...然后退出了终端。在zsh 重新启动它突然对我有用。 IDK。 添加export PATH=/bin:/usr/bin:/usr/local/bin:$PATH求~/.zshrc文件,保存文件后运行source ~/.zshrc【参考方案2】:

对我来说,重启终端似乎可以解决问题。

【讨论】:

【参考方案3】:

    使用像VS Code这样好的文本编辑器并打开你的.zshrc文件(应该在你的主目录中。如果你没有看到它,请务必在打开时右键单击该文件夹并选择“显示隐藏文件”选项)。

    找到它声明的位置:export PATH=a-bunch-of-paths-separated-by-colons:

    在行尾,结束引号之前插入::$HOME/.local/bin

它应该适合你。

您可以先在终端中输入以下内容来测试这是否会起作用:export PATH=$HOME/.local/bin:$PATH

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

【讨论】:

啊哈,这就是我的错误导致 zsh 显然“忽略”了我的 PATH 设置。从 bash 开始,我习惯于在我的主文件夹中的目录前加上 ~。所以事实证明对于 zsh 我应该使用 $HOME 变量,就像在你的例子中一样。【参考方案4】:

重新启动终端对我来说也是诀窍。

【讨论】:

【参考方案5】:

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

export PATH="all your path inside the quotes"

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

保存文件后,更改命令中的/bin/zsh 或选择默认值

...然后重新启动终端,您的 zsh shell 应该会再次运行!

【讨论】:

【参考方案6】:

正如其他人所说,只需在您进行更改后重新启动终端即可重置您对 ~/.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

我能够使用关键字代码从命令行打开程序。

【讨论】:

【参考方案7】:

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

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

【讨论】:

非常感谢。我遇到了问题,这个答案让我意识到我没有使用 $HOME 并提供相对路径。使用带有$HOME 的完整路径解决了我的问题。 +1 对于许多简单的用例:如果您只是想添加一个可执行文件,那么添加符号链接是可行的方法。如果您希望在新文件夹中管理多个可执行文件,那么在该用例中添加到 $PATH 会更好。【参考方案8】:

在您的 ~/.zsh 配置文件中包含包含别名的 bash 路径文件的路径。就我而言,它在 ~/.zsh 中包含“source ~/.bash_profile”行。

【讨论】:

我没有~/.zsh 文件。相反,我不得不把它放在/etc/zshrc 相同但在文件中挖掘:~/.zshrc【参考方案9】:

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

sudo yum remove zsh
sudo yum install -y zsh

【讨论】:

【参考方案10】:

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

在 iTerm 2 上,转到首选项(或命令,)。然后转到 profile 标签并转到 command。如下图所示,您需要选择command选项并粘贴zsh shell的路径(要找到路径,可以which zsh)。

此时,您将仅将 zsh 作为 iTerm 2 的默认 shell,并将 bash 作为默认 mac 终端应用程序的全局默认 shell。接下来,我们仍然缺少 zsh 中来自 bash 的命令。所以要做到这一点,你需要继续你的 bash(你有你的命令工作的地方)并从 env 获取 PATH 变量(使用这个命令来做到这一点:env | grep PATH)。

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

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

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

【讨论】:

我们将导出添加到“开始时发送文本”的原因是出于某种原因,每当我重新打开 iTerm 2 时,路径总是会重置为之前的状态。所以这是一个不错的选择修复它的方法。【参考方案11】:

不通过 iTerm2 或 macOS 上的本机终端编辑 .zshrc 文件的一种方法是在另一个应用程序中使用终端。例如,我将终端用作 VSCode 的一部分,并且能够找到并编辑该文件。

【讨论】:

【参考方案12】:

在我的例子中,注释的代码在第一行没有被注释是错误的。

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

哈希已被删除。添加回来后工作正常。

我刚刚在这里发布了这个,所以有人可能会觉得这很有帮助。因为它只是行的开头,可能会像我一样被错误地删除。尝试了几种方法似乎没有解决方案。

【讨论】:

【参考方案13】:

我的解决方案:

改回bash:

source .bashrc

下一个:

echo $PATH

复制这个:

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

zsh

source .zsh

打开.zshrc:

并粘贴:

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

重启终端

【讨论】:

【参考方案14】:

对我来说永久更改路径的最佳解决方案

打开 Finder-> 进入文件夹 /Users/ /usr/local/bin

使用 TextEdit 打开 .zshrc

.zshrc 是隐藏文件,使用 command+shift+ 取消隐藏。按

删除文件内容并输入

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

并保存

现在

zsh: command not found Gone

【讨论】:

【参考方案15】:

如果您使用的是 macOS,请尝试按照此步骤操作

如果您编写代码以在~/.bash_profile 中导出 PATH,那么不要错过第 1 步

第 1 步:

确保在您的终端打开时加载.bash_profile,检查您的~/.bashrc~/.zshrc(如果您使用的是zsh),是否有类似source ~/.bash_profile 的代码?如果没有,您可以在其中添加代码source ~/.bash_profile 手动添加 还要确保此代码在您的 .bash_profile > export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 上,如果不存在,请将该代码添加到其中

9 月 2 日:

确保 "Visual Studio Code.app" 位于正确的位置 > "/Applications""/Users/$(whoami)/Applications" 删除旧安装的 vs-code PATH rm -rf /usr/local/bin/code 打开“Visual Studio Code.app” CMD+Shift+P 然后选择 "Shell Command: Instal "code" command in PATH" 重新启动您的 Mac 并通过运行 code -v 进行检查,它应该可以工作

【讨论】:

【参考方案16】:

在我的例子中,我使用的是小写的变量path

所以在/etc/profile.d 中,我正在运行一个使用变量path 的脚本。因为它是小写的,所以我从没想过它会与实际变量 PATH 混淆。请小心,不要在脚本中使用变量 path

【讨论】:

【参考方案17】:

我在 ubuntu 上安装 ZSH 时遇到了类似的问题,当我尝试执行节点或其他命令时收到错误 zsh: command not found node

我的解决方案是打开我的~/.zshrc 文件并在上面写下一段代码:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

然后我关闭并重新打开我的终端,就是这样。

【讨论】:

【参考方案18】:

您需要创建 .zprofile 文件并写入其中

cd /
touch .zprofile
vim .zprofile
//Put Your Path

退出并保存 并将这段代码运行到 shell 中

 source ~/.zshrc

【讨论】:

【参考方案19】:

在 MacOS BigSur 上 点击终端 >> 首选项/bin/zsh 更改为 /bin/bash 关闭并重新打开终端

来自

您现在可以返回 .zshrc 文件以恢复您所做的最后更改

【讨论】:

【参考方案20】:

我通过重新安装和/或在~/.zshrc 文件末尾添加解决了我的问题:

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

Oh My Zsh 是通过在终端中运行以下命令之一来安装的。您可以使用 curl 或 wget 通过命令行安装它。

卷曲:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

wget:

sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

【讨论】:

【参考方案21】:

要永久修复它,您应该转到根目录中的.zshrc 文件。你可以这样做:

    cd返回你的根目录 code . 从您的 VS Code 打开目录,以便能够轻松编辑您的 .zshrc 文件 点击 VS Code 中的 .zshrc 文件 (1) 如果您之前没有对此文件进行任何更改,它应如下所示:

eval "$(rbenv init -)"

导出 PATH="$PATH:$HOME/.rvm/bin"

export PATH="/opt/homebrew/bin:$PATH"

(2) 如果您确实进行了任何更改,例如添加一些新的 PATH,那么只需删除该 PATH。 就我而言,我曾经也有一个自制路径,所以我删除了它。因此,现在它看起来与步骤 4 (1) 中的相同。

【讨论】:

【参考方案22】:

适用于 ma​​cOS 12 Monterey:

您可以手动编辑.zshrc 文件并恢复您对PATH 所做的更改。

打开TextEdit 应用程序。

转到文件夹:cmd + shift + g

输入:~/

查看隐藏文件:cmd + shift + .

选择:.zshrc

还原更改、保存文件并重新打开终端。

【讨论】:

【参考方案23】:

对于 macOS,必须将 source $HOME/.bash_profile 添加到 .zshrc 文件中。

    $ code ~/.zshrc(在 VSCode 上打开 .zshrc 文件) 在文件顶部添加source $HOME/.bash_profile 并保存。 $ source ~/.zshrc 刷新.zshrc

别忘了刷新。

【讨论】:

这很古怪; .bash_profile 应该包含特定于 Bash 的命令,并且可能具有与 Zsh 不兼容的语法(取决于您的配置方式)。

以上是关于在 zsh 上找不到命令 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

zsh:找不到命令:php

zsh:找不到命令 laravel

在 sudo 上找不到命令

zsh:找不到命令:macOS 上的 mkfs

在 zsh 中安装 npm 后找不到命令

zsh:找不到命令:dotnet-ef