我的 Bash 或 zsh 或终端不再工作

我的 Bash 或 zsh 或终端不再工作

我知道这可能是一个简单的修复。

但是我已经完美地设置了我的终端,默认使用 bash 配置文件。然后我安装了 iTerm,现在什么都不起作用了。

我甚至无法在目录中运行 ls 命令。

这是我打开新终端窗口时得到的输出。

-bash: dirname: command not found
-bash: dirname: command not found

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
Name's-MacBook-Pro-2:~ name$ 

即使我尝试将默认值设置为 zsh,我也会得到:

-bash:chsh:未找到命令

我真的不知道发生了什么。

如果我跑

export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

然后一切又恢复正常。但如果我重新启动终端,它又不行了,我需要重新报告路径。

答案1

事实上,使用标准化默认值导出 PATH 可以暂时修复该问题,即export PATH="..."shell 在启动时加载的某个初始化文件中存在错误。

它们应该是这样的:export PATH="$PATH:/some/path"。由于$PATH分配中缺少部分,它会破坏环境变量的当前值PATH而不是添加到它,并让你处于这样的境地。

/bin/echo $PATH应该会显示 PATH 的值。如果您在新的 shell 中执行此操作,而没有使用手动导出修复程序,它将为您提供线索,帮助您找到 PATH 被覆盖的位置。

Stack Overflow 上一些相关的问答, 具体来说这个答案导致:

检查~/.bash_profile是否有一行export PATH="..."未包含$PATH在作业中,请将其添加进去。只需确保:在路径之间放置一个,因为这是分隔符。例如,export PATH="$PATH:/some/path:another/path"可以安全地添加/some/pathanother/path

如果~/.bash_profile包含 或 中的一个或两个source $HOME/.profilesource $HOME/.bashrc或者在 中未找到并修复.bash_profile,则也检查这些文件。另请注意 是.的别名source,因此可能会说. $HOME/.profile,等等。

上述答案还指出,在 Terminal 和 iTerm 中(使用默认设置),新 shell 默认为“登录 shell”,不会读取~/.bashrc。因此,如果您遵循非 Mac OS(Linux 等)的说明,请尝试添加他们所说的内容~/.bash_profile

如果您愿意,您可以source $HOME/.bashrc在您的系统中~/.bash_profile这样做,但由于它不应该在登录 shell 中加载,因此这可能会在某些时候导致麻烦。

此外,以防万一,请注意仅在命令行上~扩展为。必须在脚本中使用才能达到相同的效果,但也可以从命令行使用。/home/{user}$HOME

相关内容