Answers:
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
您)。发生在我身上!
source ~/.bash_profile
运行该窗口来测试所有更改。最好保持窗口和编辑器(要更改.bash_profile文件的位置)处于打开状态,以防所做的更改无效并阻止您打开新窗口来编辑文件。尽管您仍然可以使用TextEdit或其他简单的编辑器来更改文件。
您所做的更改PATH
可能是暂时的。关闭您所在的外壳,exit
然后重新打开它。
如果您已经编辑了一个文件,该文件PATH
为新打开的外壳设置了,请指定命令的完整路径来修复您所做的更改(例如/usr/bin/vim
)。
/usr/bin
任何bin
目录?@Mariaa