【问题标题】:commands not found on zsh [closed]在 zsh 上找不到命令 [关闭]
【发布时间】: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

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

【问题讨论】:

    标签: shell osx-lion 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】:
      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 替换为 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 文件。你可以这样做:

                                  1. cd返回你的根目录
                                  2. code . 从您的 VS Code 打开目录,以便能够轻松编辑您的 .zshrc 文件
                                  3. 点击 VS Code 中的 .zshrc 文件
                                  4. (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 文件中。

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

                                      别忘了刷新。

                                      【讨论】:

                                      • 这很古怪; .bash_profile 应该包含特定于 Bash 的命令,并且可能具有与 Zsh 不兼容的语法(取决于您的配置方式)。
                                      猜你喜欢
                                      • 2021-11-27
                                      • 2020-02-12
                                      • 1970-01-01
                                      • 2020-02-06
                                      • 2022-08-17
                                      • 2017-03-03
                                      • 2019-11-25
                                      • 2016-07-30
                                      • 2015-07-01
                                      相关资源
                                      最近更新 更多