基本命令不起作用,即:-bash:ls:没有这样的文件或目录


8

我是Unix的新手,在为我的论文安装程序的过程中,我必须使用基本Unix命令(例如ls。每次键入ls和要列出其文件的目录名称时,都会显示为:

-bash: ls: No such file or directory

我该怎么做才能解决此问题?任何帮助都非常感谢!


ls不起作用的原因,但cd确实记录在我的答案中
Michael Durrant

Answers:


23

使用以下命令立即(即在任何注销之前)重置路径:

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

它不会还原您的完整PATH,但基本实用程序将再次可用。

这是发生这种情况的一个示例:

您有一个PATH变量(从中读取时称为$ PATH)

就像是:

$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin

您试图添加到它,但是您不小心使用了

PATH=PATH:other_dir

代替

PATH=$PATH:other_dir

结果是你的路变成了

PATH:other_dir

然后所有诸如ls和sed之类的实用工具都无法正常工作

您可以通过执行以下操作来修复最小设置

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

如果登录点文件使您的PATH混乱,这将特别有用。
检查.bashrc和/或.bash_profile文件是否有任何PATH更改。

正如Greg所说,您也可以注销(或更安全的选择,以防万一打开新窗口,请打开一个新窗口!),然后从新窗口中回显$ PATH。

当您不path=使用任何值时,也会发生同样的事情。它会“清除”您当前的路径并导致这些问题。

至于为什么,当您遇到这些问题时,cd起作用而ls则不起作用:

  • cd 是“内置”命令,不需要您的PATH即可找到程序
  • ls 是一个程序,需要使用PATH来查找它的位置。

您可以通过以下方式查看此内容:

$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$

没有错误表示该命令是内置命令

在“继续”(或注销)之前...

确保通过打开新窗口或执行源〜/ .bash_profile来测试任何更改(特别是对.bashrc,.profile等正在执行PATH设置命令的更改)。最好保持窗口和编辑器(当您更改.bash_profile文件时)处于打开状态,以防您的更改不起作用并阻止您打开新窗口来编辑文件。尽管您仍然可以使用TextEdit或其他简单的编辑器来更改文件(例如,避免使用命令行和vi)。如果/当外壳损坏时,请小心不要重启,否则您可能甚至无法登录。这真的很糟糕(没有其他帐户可以用来管理su您)。发生在我身上!

我的“额外帐户”修复程序当时还是救命的,强烈建议所有人使用(立即执行!)


嘿! 非常感谢!我只是重置路径,但是当我打开一个新的终端窗口时,也会发生同样的事情。然后,我做了更多的〜/ .bash_profile检查是否有任何更改,它显示了这一点:export PATH =
Mariaa 2014年

那是正常的吗?
Mariaa 2014年

此外,当我回显$ PATH时,我没有任何结果
..

@Mariaa如何重置告诉文件或命令的路径。
jgr208 2014年

1
确保通过打开新窗口或source ~/.bash_profile运行该窗口来测试所有更改。最好保持窗口和编辑器(要更改.bash_profile文件的位置)处于打开状态,以防所做的更改无效并阻止您打开新窗口来编辑文件。尽管您仍然可以使用TextEdit或其他简单的编辑器来更改文件。
Michael Durrant 2014年

8

您所做的更改PATH可能是暂时的。关闭您所在的外壳,exit然后重新打开它。

如果您已经编辑了一个文件,该文件PATH为新打开的外壳设置了,请指定命令的完整路径来修复您所做的更改(例如/usr/bin/vim)。


你好!谢谢(:我尝试这样做,但是没有用。我猜我确实做了一些奇怪的事情。我记得使用vim对PATH做一些事情,然后一切都搞砸了。.,希望我知道更多的计算机语言整理好东西!
Mariaa 2014年

是路径中的/usr/bin任何bin目录?@Mariaa
jgr208 2014年

jgr208:这是我的路径:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin
Mariaa 2014年

@Mariaa您没有删除bin或任何东西,并且您对文件的读取权限正确吗?
jgr208

但是,当我在新终端中输入PATH = / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin时,我只能看到此内容或使用任何命令窗口..否则我不能使用任何命令。:S
Mariaa 2014年
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.