首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的$PATH变量搞砸了。怎么把它改回来?

我的$PATH变量搞砸了。怎么把它改回来?
EN

Ask Ubuntu用户
提问于 2019-07-28 21:18:40
回答 1查看 12.3K关注 0票数 0

每当我尝试终端中的基本命令(如sudols )时,都会得到以下错误:

命令'sudo‘在'/usr/bin/sudo’中可用,因为“/usr/bin”未包含在PATH环境变量中,因此无法定位该命令。sudo:找不到命令

输入echo $PATH时,它将返回

/下载/stata安装/stata 15:/下载/stata

我怀疑我在试图安装Stata时弄错了$PATH变量。

我已经尝试过export PATH="/usr/bin:$PATH",它暂时解决了这个问题(来自这个答案)。然后当我做echo $PATH时,它会返回

/usr/bin:/下载/stata安装/stata 15:/下载/stata

但是这个修复是暂时的,当我重新启动终端时,我不能再次使用sudo。

另一个答案说我可以做一个永久的修复:

首先,我做了export PATH=$PATH:/usr/bin,这再次临时解决了问题。当我做echo $PATH时,它会返回

/下载/stata installation/stata15:/Downloads/stata:/usr/bin

然后,我应该能够通过使用/etc/environment编辑sudo nano /etc/environment文件并确保它是永久性的

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games“

当我打开/etc/environment文件时,它已经有了正确的路径,所以没有任何改变。因此,当我重新启动终端时,像sudo这样的基本命令仍然不能工作,我不得不再次执行临时修复。

我怀疑/etc/environment文件不是问题所在,还有另一个文件我需要修改。你知道怎么修吗?

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2019-07-29 16:05:05

如何永久更改$PATH变量?

如何将目录添加到路径中?,以前也有过类似的问题。

在哪里进行更改?

$PATH可以在不同的级别和不同的情况下进行更改。在全局级别,$PATH存储在/etc/environment中。更改此设置将更改计算机所有用户的默认$PATH集。

个性化的定制改变可以根据个人的需要在三个地方进行。

  1. 若要更改所有登录会话的路径,请更改/home/$USER/.profile的路径。
  2. 若要更改登录后打开的in会话(如终端窗口),请更改/home/$USER/.bashrc的路径。
  3. 若要更改登录后可能打开的in会话(例如远程GUI shell ),请更改/home/$USER/.xsessionrc的路径。

如何做出改变?

通常添加一个新的PATH语句或导出命令,如下所示:

代码语言:javascript
复制
PATH="/path/to/dir:$PATH"

代码语言:javascript
复制
export PATH="/path/to/dir:$PATH"

注意,这些语句在右侧使用$PATH变量。这种向$PATH添加新目录的特定方式是在现有$PATH变量的开头处添加新目录。

问题

中的具体案例

查找上面提到的文件:

  • /etc/environment
  • /home/$USER/.profile
  • /home/$USER/.bashrc
  • /home/$USER/.xsessionrc

找出由于软件Stata安装不当而修改了$PATH的确切位置。在本例中,用/home/$USER/.bashrc进行的修改。

在注释中,三个export语句被添加到/home/$USER/.bashrc中:

代码语言:javascript
复制
export PATH=/Downloads/stata\ installation/stata:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PATH=/Downloads/stata\ installation/stata15:/Downloads/stata installation/stata

第一个export语句在默认$PATH的开头添加/Downloads/stata\ installation/stata。第二个export语句将$PATH重置为默认目录集。第二个export语句尝试将$PATH设置为一些Stata目录,但在空格之前忽略了转义字符\,并将/Downloads/stata installation/stata设置为/Downloads/stata

由于Stata没有安装在这台计算机上,所以您不需要进行任何这些修改。您可以将所有导出语句注释为:

代码语言:javascript
复制
#export PATH=/Downloads/stata\ installation/stata:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
#export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
#export PATH=/Downloads/stata\ installation/stata15:/Downloads/stata installation/stata

注意,在每一行的开头插入#将它们标记为注释。如果在注释这些export命令之后一切正常,您可以从.bashrc文件中删除它们。

注释掉或删除这三行将是您的bash会话,而不需要定制$PATH变量。您将使用/etc/environment中设置的默认值。

希望这能有所帮助

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1161740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档