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

Mar*_*iaa 12 command-line ls bash path

我是 Unix 的新手,在为我的论文安装程序的过程中,我必须使用 PATH 来处理基本的 Unix 命令,例如ls. 每次我输入ls我想要列出文件的目录名称时,它都会显示为:

-bash: ls: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我能做些什么来解决这个问题?非常感谢任何帮助!

Mic*_*ant 29

立即重置您的路径(即在任何类型的注销之前):

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

它不会恢复您的完整 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
Run Code Online (Sandbox Code Playgroud)

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

PATH=PATH:other_dir
Run Code Online (Sandbox Code Playgroud)

代替

PATH=$PATH:other_dir
Run Code Online (Sandbox Code Playgroud)

结果是你的道路变成了

PATH:other_dir
Run Code Online (Sandbox Code Playgroud)

然后像 ls 和 sed 这样的所有实用程序都不起作用

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

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

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

正如格雷格所说,您也可以退出(或者更安全的选择,打开一个新窗口,以防打开新窗口被破坏!)然后从新窗口回显 $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
$
Run Code Online (Sandbox Code Playgroud)

没有错误意味着该命令是内置命令

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

确保通过打开一个新窗口或执行 source ~/.bash_profile 来运行它来测试任何更改(特别是对 .bashrc、.profile 等执行 PATH 设置命令的更改)。保持窗口和编辑器(当您更改 .bash_profile 文件时)打开也是一个很好的做法,以防您的更改不起作用并阻止您打开新窗口来编辑文件。尽管您仍然可以使用 TextEdit 或其他简单的编辑器来更改文件(例如,避免使用命令行和 vi)。如果/当您的外壳损坏或者您甚至可能无法登录时,请注意不要重新启动。这真的很糟糕(没有另一个帐户,su你就被灌输了)。发生在我身上!

我的“额外帐户”修复也是一个救命稻草,强烈推荐给所有人(现在就做!)


Gre*_*ill 8

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

如果您编辑了一个PATH为新打开的 shell设置的文件,请指定命令的完整路径以修复您更改的任何内容(例如/usr/bin/vim)。