我的终端总是出现问题,因为我尝试使用的命令“未找到”。然后,当我尝试安装该命令时,我又遇到了另一个需要安装的命令,该命令也“未找到”。此外,每当我得到类似 sudo 的东西时,它都会在该会话中起作用,但下次我打开终端时,我必须重新安装所有命令。如果我这样做
echo $PATH
它返回
/opt/local/bin:/opt/local/sbin:’/usr/local/bin:??
我收到了一个临时解决方案,效果不错,但每次打开终端时我都必须重做,所以如果有人能向我解释如何永久修复这个问题,那就太好了。我知道 echo $PATH 不应该返回这个。
答案1
您可能不需要卸载或重新安装任何命令,您可能只需要修复导致变量PATH
损坏的任何原因。
要将其设置为当前 shell 会话的合理默认值,请键入以下命令:
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
请注意,这只能修复当前 shell 会话中的问题,您打开的下一个终端窗口将恢复到损坏状态。
为了下次修复它,您需要找到错误设置的地方并在那里修复它。
在现代 macOS 中,系统范围的路径设置是在/etc/paths
和中设置的/etc/paths.d/*
(它们是文本配置文件)。因此,请先检查它们,确保它们看起来正常。
此外,中还有系统范围的 shell 启动脚本/etc/
,例如/etc/profile
和/etc/bashrc
,等等。PATH
在 shell 中设置或添加启动脚本是相当常见的。如果您或某个安装程序、包管理器或安装脚本编辑了这些脚本,您可能需要查看它做了什么并进行修复(也就是说,在文本编辑器中查看这些脚本文件,如果发现错误就编辑它们以修复它们)。您需要检查哪些取决于您使用的 shell、您如何调用和使用它们(即作为登录、非登录交互式或非交互式 shell)以及存在哪些 shell 启动脚本文件(某些文件优先于其他文件,因此某些文件的存在可能会导致其他文件无法运行)。您需要检查所用 shell 的手册页,以了解它们在什么情况下运行哪些 shell 启动脚本的详细信息。
然后,您需要检查您自己的主目录中的个人 shell 启动脚本。同样,运行哪些脚本取决于您使用的 shell、您如何调用它以及存在哪些脚本文件,因此您需要检查手册页。您可能最终需要查看~/.profile
和~/.bashrc
。
最后一点:假设您复制/粘贴了该输出文本,它看起来似乎包含一个花括号,这表明您的某个 shell 启动脚本意外地包含了一个花括号。在 GUI 文字处理器/文本编辑器中编辑 shell 脚本和其他计算机可读的基于文本的文件格式(源代码、HTML、CSS、JavaScript、JSON、XML、.plists 等)时要小心。确保关闭所有文本替换功能,如“智能引号”和“智能破折号”,否则您最终会在需要直引号的地方意外地得到花括号,或者在需要两个连字符的地方得到一个破折号。大多数计算机可读格式仅将直引号视为具有语法意义。