“ -bash:ls:找不到命令”


30

我安装了OS X Lion(10.7)的最新更新。完成之后,我的终端将无法识别正常命令。我输入ls并得到:

-bash: ls: command not found

我以为我会尝试将usr / bin添加到我的路径,但是我找不到.bash_profile来编辑它,因为键入edit .bash_profile不起作用。由于我的终端无法识别执行此操作所需的命令,因此我无法将Finder设置为显示所有文件。

我需要做什么?


2
让我们找到一条路,看看会发生什么。export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin粘贴深色部分(或非常小心地键入)-由于缺少两个命令-某些东西打乱了您的路径。在做大事情之前,开始备份可能是明智的。
bmike

1
@bmike谢谢!将其添加到.bash_profile中,现在一切正常。必须这样打开.bash_profile:/usr/bin/vi ~/.bash_profile将其作为答案,我可以接受!
LuxuryMode

Answers:


42

由于缺少两个命令,因此您的路径“被踩了”。

在做大事情之前,开始备份可能是明智的。

Mac OS X 10.7(Lion)上的默认路径是这样的:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

如果通过在shell窗口中键入以上内容来重置路径,然后键入该路径,则将export PATH修复该窗口。

因此,您可以从那里开始,看看还有什么不对劲,并在启动点文件或其他已定义的地方对其进行修复。

这种破损几乎总是需要在点文件中修复的。对于bash,编辑和修复.bash_profile和/或.bashrc通过撤消最近的更改,只需重新设置所需的$ PATH。通常的错误是分配新路径,而不是引用=右侧的变量的先前值。


2
对我来说,这提供了一个临时解决方案。
EtienneLow-Décarie2014年

2
谢谢!ls更新.bash_profile😂 后,我没有工作时就皱起了眉头
Adrian

是啊@Adrian语法错误或空路径可引起强烈的焦虑😅🤭🤬🔥
bmike

这提供了一个临时解决方案。重新启动CMD之后,我不得不重做所有步骤
-Pawan,

这仍适用于Mac OS 10.14.3
Stephen Romero

11

这应该完全永久地解决该问题。

首先,在终端中使用以下命令导出环境路径。

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/b‌​in

现在您有了所需的命令。(例如,尝试ls。您将看到该命令正在运行)。但这仅适用于当前会话。如果关闭终端并打开一个新终端,则会遇到上一期。要使此更改永久生效,请使用以下命令,

转到主目录

cd ~

在nano / vim中打开.bash_profile文件(我在这里使用nano)

nano .bash_profile

这将打开nano编辑器。在新行中,粘贴以下内容;

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:$PATH

按'control'+'o'保存(WriteOut),按'control'+'x'退出nano。

全部做完 !现在尝试命令。


3

在我看来,好像/etc/profile不是在Shell启动时运行的。这是负责初始化PATH的全局启动文件。/etc/profile使用以下命令检查是否存在并且可读且可执行:

. /etc/profile

如果不存在,则需要从备份或安装了Lion的另一台计算机上还原它,或者再次安装Lion。如果它存在但不可执行,请尝试使用“磁盘工具”修复磁盘权限。

如果它确实存在并且是可执行的(并且包含一些代码),则它可能在应有的状态下无法运行,或者您的启动脚本可能以某种方式覆盖了它。作为一种解决方法,请尝试将其放在. /etc/profile开头,~/.bash_profile以确保其已运行。如果仍然遇到问题,请echo $PATH在运行后添加,以查看PATH是否已正确初始化。如果是这样,则脚本中的某些内容正在更改它。

这是的默认内容/etc/profile

# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi

path_helper构造默认的PATH。您可以尝试跑步

unset PATH; /usr/libexec/path_helper -s

看看它产生了什么。

无论如何,如果问题不在您的启动脚本中,请联系Apple支持http://www.apple.com/support/contact/或在https://bugreport.apple.com报告错误。/让苹果知道有问题。


unset PATH; /usr/libexec/path_helper -s向我显示未包含在我的中的PATH /etc/profile。有什么建议么?
EtienneLow-Décarie2014年

. /etc/profile暂时运行即可解决问题。我已粘贴到的顶部~/.bash_profile,但似乎也没有运行。
EtienneLow-Décarie2014年

1
在bash手册页中查看启动文件的完整列表以及搜索顺序。例如,如果您有登录文件,则它优先于配置文件。检查其他启动文件。
克里斯·佩奇

1

要检查您的路径确实存在问题,结果是/bin/ls什么?

如果可行,则应将路径恢复为/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin,例如VI,可以使用其路径为(在我的mac上)/usr/bin/vi


0

我想分享导致我犯此错误的错误-至少就我而言,

当我在中添加新内容PATH~/.bash_profile,我忘记:$PATH在刚刚添加的路径的末尾添加。

我使用了临时的修复程序(终端中的以下命令),此处的管理员已经指出该临时修复程序可以返回bash_profile,因为我一开始无法使用vi命令来打开它。

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

一进去,我就纠正了我的错误。

(负数据很重要!)


-1

发生这种情况时,我试图将我的Maven路径设置为envoron变量。因此,我只是将.profile和.bash_profile文件移动到了垃圾箱,然后再次尝试就可以了。



-2

看起来您的PATH变量已损坏。检查您是否有机会在脚本中修改PATH变量,或者只需通过说echo $ PATH来检查PATH,就可以确保是否没有损坏。


-3

您可以按以下方式导出路径:

导出PATH = $ PATH:/ bin:/ usr / local / bin


3
欢迎询问不同!这个问题已经有一个可接受的答案,您的答案与该可接受的答案没有实质性的不同。请参阅以下有关如何提供良好答案的常见问题解答:apple.stackexchange.com/help/how-to-answer
fsb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.