我正在使用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
那是怎么回事?为什么所有命令都丢失了?
答案 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)
使用像Sublime文本这样的好文本编辑器并打开您的.zshrc
文件(应该在您的主目录中。如果您没有看到它,请务必在文件夹中右键单击打开并选择“显示隐藏文件”选项。
找到它所声明的位置:export PATH=a-bunch-of-paths-separated-by-colons:
在结束引号之前的行尾插入此内容::$HOME/.local/bin
它应该适合你。
您可以先在终端输入以下内容来测试这是否有效: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)
答案 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
)
这时,仅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
文件来修复此问题。
export PATH="all your path inside the quotes"
... PATH="
之间没有任何空格并保存文件。
保存文件后,更改命令中的/bin/zsh
或选择默认值
...并重新启动终端,你应该让你的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"
"/Users/$(whoami)/Applications"
rm -rf /usr/local/bin/code
,然后选择CMD+Shift+P
"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)
重新启动终端也为我提供了诀窍。