我知道这可能是一个简单的修复。
但是我已经完美地设置了我的终端,默认使用 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/path
和another/path
。
如果~/.bash_profile
包含 或 中的一个或两个source $HOME/.profile
,source $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