如何永久改变$PATH变量?

如何永久改变$PATH变量?

每当我在终端中尝试基本命令(如sudo或 )时ls,都会出现此错误:

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

当我输入时echo $PATH,它返回

/下载/stata 安装/stata15:/下载/stata

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

我试过export PATH="/usr/bin:$PATH"暂时解决这个问题(从这个答案)。然后当我这样做时echo $PATH,它返回

/usr/bin:/Downloads/stata 安装/stata15:/Downloads/stata

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


其他答案说我可以做出永久的修复:

首先,我执行了export PATH=$PATH:/usr/bin,这又暂时解决了问题。当我执行 时echo $PATH,它又返回

/Downloads/stata 安装/stata15:/Downloads/stata:/usr/bin

然后我应该能够通过编辑文件/etc/environmentsudo 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不在于该文件,而是另一个文件需要更改。您知道如何修复它吗?

答案1

如何永久改变$PATH变量?

类似的问题之前已经回答过如何将目录添加到 PATH?

在哪里进行更改?

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

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

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

如何进行更改?

通常,您会添加一个新的 PATH 语句或一个导出命令,例如:

PATH="/path/to/dir:$PATH"

或者

export PATH="/path/to/dir:$PATH"

请注意,这些语句在右侧使用 $PATH 变量。这种将新目录添加到 $PATH 的特定方法将新目录添加到开始现有的 $PATH 变量。

问题中的具体案例

查找上面提到的文件:

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

找到由于软件安装不当而修改 $PATH 的具体位置统计软件. 在这种情况下,进行了修改/home/$USER/.bashrc

根据评论,export添加了三条声明/home/$USER/.bashrc

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

第一个语句在默认 $PATH 的开头export添加了。第二个语句将 $PATH 重置为目录的默认设置。第二个语句尝试将 $PATH 设置为某些 Stata 目录,但遗漏了空格前的转义字符,导致as only混乱。/Downloads/stata\ installation/stataexportexport\/Downloads/stata installation/stata/Downloads/stata

由于此计算机未安装 Stata,因此您不需要进行任何修改。您可以将所有导出语句注释为:

#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

希望这可以帮助

相关内容