在 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】:适用于 macOS 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 上找不到命令 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章