![如何永久改变$PATH变量?](https://linux22.com/image/914391/%E5%A6%82%E4%BD%95%E6%B0%B8%E4%B9%85%E6%94%B9%E5%8F%98%24PATH%E5%8F%98%E9%87%8F%EF%BC%9F.png)
每当我在终端中尝试基本命令(如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/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
不在于该文件,而是另一个文件需要更改。您知道如何修复它吗?
答案1
如何永久改变$PATH
变量?
类似的问题之前已经回答过如何将目录添加到 PATH?
在哪里进行更改?
$PATH 可以在不同级别和不同情况下进行更改。在全局级别,$PATH 存储在 中/etc/environment
。更改此值将改变计算机所有用户的默认 $PATH 设置。
可以根据个人需要在三个地方进行个性化定制更改。
- 要更改所有登录会话的路径,请更改 处的路径
/home/$USER/.profile
。 - 要更改登录后打开的 bash shell 会话(例如终端窗口),请更改路径
/home/$USER/.bashrc
。 - 要更改登录后可能打开的 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/stata
export
export
\
/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
。
希望这可以帮助