在zsh上找不到命令

时间:2013-08-25 11:12:35

标签: shell osx-lion zsh

我正在使用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

那是怎么回事?为什么所有命令都丢失了?

20 个答案:

答案 0 :(得分:113)

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

尝试:

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

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

exec /bin/zsh

exec /usr/bin/zsh

答案 1 :(得分:9)

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

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

  3. 在结束引号之前的行尾插入此内容::$HOME/.local/bin

  4. 它应该适合你。

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

    如果在将此类型输入终端并且终端功能正常后错误消失,则上述解决方案将起作用。如果没有,你将不得不找到引用错误所在的文件夹(找不到的东西),并用PATH-TO-THAT-FOLDER替换上面的PATH。

答案 2 :(得分:5)

您可以在/ usr / local / bin /

中创建符号链接
sudo ln -s $HOME/.composer/vendor/bin/homestead /usr/local/bin/homestead

答案 3 :(得分:5)

我的解决方案:

更改回bash

source .bashrc

下一个:

echo $PATH

复制此内容:

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

返回到zsh

source .zsh

打开.zshrc

并粘贴:

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

重启终端

答案 4 :(得分:4)

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

来自 Preference screen before

Preference screen after

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

答案 5 :(得分:4)

为我提供永久更改路径的最佳解决方案

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

使用TextEdit打开.zshrc

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

删除文件内容和类型

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

并保存

现在

zsh:找不到命令

答案 6 :(得分:4)

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

里面

答案 7 :(得分:3)

对我来说,重启我的终端似乎解决了这个问题。

答案 8 :(得分:2)

我通过重新安装和/或在 ~/.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 -)"

答案 9 :(得分:2)

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

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

jsoup

这时,仅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,我们就完成了!

答案 10 :(得分:2)

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

enter image description here

export PATH="all your path inside the quotes"

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

enter image description here

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

...并重新启动终端,你应该让你的zsh shell再次运行!

答案 11 :(得分:0)

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

答案 12 :(得分:0)

在我的情况下,错误地是注释的代码在第一行没有注释。

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

哈希已删除。重新添加后效果很好。

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

答案 13 :(得分:0)

卸载并重新安装zsh为我工作:

sudo yum remove zsh
sudo yum install -y zsh

答案 14 :(得分: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
}

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

答案 15 :(得分:0)

如果您使用的是macOS,请尝试执行此步骤

如果您编写了用于在~/.bash_profile中导出PATH的代码,请不要错过第1步

第1步:

  • 确保在终端处于打开状态时加载了.bash_profile,请检查~/.bashrc~/.zshrc(如果使用的是zsh),是否有类似{{1} } 或不?。如果没有,您可以在其中添加代码source ~/.bash_profile手动添加
  • 还要确保此代码位于您的source ~/.bash_profile> .bash_profile上(如果不在其中),请将该代码添加到其中

9月2日:

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

答案 16 :(得分:0)

在我的情况下,我使用小写的变量 <mat-form-field appearance="outline"> <mat-label>Pick one</mat-label> <input mat-input placeholder="Husband" aria-label="Members" matInput [formControl]="husband" [matAutocomplete]="husband"> <mat-autocomplete #husband="matAutocomplete"> <mat-option *ngFor="let member of husbandFilter | async" [value]="member"> {{ member.name }} </mat-option> </mat-autocomplete> </mat-form-field> <mat-form-field appearance="outline"> <mat-label>Wife</mat-label> <input mat-input placeholder="Wife" aria-label="Members" matInput [formControl]="wife" [matAutocomplete]="wife"> <mat-autocomplete #wife="matAutocomplete"> <mat-option *ngFor="let member of wifeFilter | async" [value]="member"> {{ member.name }} </mat-option> </mat-autocomplete> </mat-form-field>

因此,在import React from 'react'; import { BackHandler, ToastAndroid} from 'react-native'; export default class LoginScreen extends React.Component { state = { canBeClosed: false } componentDidMount() { BackHandler.addEventListener('hardwareBackPress', this.handleBackButton); } componentWillUnmount() { BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton); } handleBackButton = () => { if (this.props.navigation.isFocused()) { if (this.state.canBeClosed) return this.state.canBeClosed = false; else { setTimeout(() => { this.state.canBeClosed = false }, 3000); ToastAndroid.show("Press Again To Exit !", ToastAndroid.SHORT); return this.state.canBeClosed = true } } }; //some code } 中,我正在运行一个使用变量path的脚本。因为它是小写字母,所以我从未想到它可能会与实际变量PATH混淆。请注意,不要在脚本上使用变量/etc/profile.d

答案 17 :(得分:0)

我在 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 :(得分:0)

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

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

退出并保存 然后将此代码运行到shell中

 source ~/.zshrc

答案 19 :(得分:0)

重新启动终端也为我提供了诀窍。