Linux系统下PATH(环境变量)的修改增删、注意点、易错点及解决办法(以wsl下的~/.bashrc文件为例阐述)

目录

一、Linux系统的PATH简介

1.怎么查看我的PATH(环境变量)?

2.PATH中定义的路径有重复的可以吗?

二、增删改PATH时容易出错的点

1.不是"C:/""D:/",而是“/mnt/d”,"/mnt/c"。

2.不是分号“;”,而是冒号“:”(注意是英文符号)。

3.不要随便删除和修改PATH中的已有内容。

三、如何修改PATH(永久或暂时;增加或修改或删除)?

1.暂时修改

1)添加新的路径

2)修改和删除已有的路径

2.永久修改

1)在终端直接把待增加的路径写入配置文件

2)文本编辑器编辑配置文件

四、PATH写错后,如何修改/恢复?

1.如果你是用3.1节的方法修改的PATH

2.如果你是用3.2节的方法修改的PATH


一、Linux系统的PATH简介

在Linux及类Unix系统中,`PATH` 是一个环境变量,用于指定系统在执行命令时搜索可执行程序的路径。简单来说,当你在终端中输入一个命令(比如  `gcc`),系统会根据 `PATH` 中定义的路径来查找相应的可执行文件

常见疑惑

1.怎么查看我的PATH(环境变量)?

在Linux系统终端输入下面的内容即可:

echo $PATH

echo就是把后面的内容显示在终端上,$PATH代表path变量。所以上面的操作就是在屏幕上显示PATH的内容。

2.PATH中定义的路径有重复的可以吗?

可以。

比如下面的这个PATH示例,“/mnt/d/download/riscv64/bin”路径出现了两次,但并不影响实际使用。

/mnt/d/download/riscv64/bin:/mnt/d/download/riscv64/bin:/usr/local/sbin:/usr/local/bin:.....

环境变量中可以有重复路径。当你输入一个命令时,系统会“从左到右”依次检查 `PATH` 中列出的每一个目录,直到找到该命令的可执行文件停止(也就是说,当有重复的路径时,会使用靠左的那一个)。

不过为了保证环境变量的整洁,不建议在环境变量中掺入重复路径。

二、增删改PATH时容易出错的点

我的Linux系统是通过本机windows下的wsl实现的,所以后文的所有探讨都基于wsl展开:

1.不是"C:/""D:/",而是“/mnt/d”,"/mnt/c"。

比如说你在window本机上解压了一个文件夹,本机路径是“D:/download/...”。当你想把该文件路径添加到环境变量上时,添加的路径不能以“D:/download/...”开头,而要以“/mnt/d/download”开头

“C:/”也要写成“/mnt/c/”。

这是因为,Linux 的文件系统是以树状结构组织的,根目录 `/` 是所有文件和目录的起点。所有的设备(包括硬盘分区、USB 驱动器、网络文件夹等)都是通过挂载(mounting)到这个树状结构中的某个点来访问的。`/mnt` 是一个常用的挂载目录,在使用 Windows 子系统(如 WSL)时,Linux 环境中会以 `/mnt/c`、`/mnt/d` 等形式访问 Windows 的驱动器。

2.不是分号“;”,而是冒号“:”(注意是英文符号)。

PATH显示时往往是一大串路径,并且不同路径间并没有明显的换行分隔,而是以冒号“:”分隔.(不是分号!)

所以,在自己添加或者修改环境变量PATH时,记得检查一下符号。

比如上面提到的PATH的前半段,

/mnt/d/download/riscv64/bin:/mnt/d/download/riscv64/bin:/usr/local/sbin:/usr/local/bin:.....

上面实际上包含了三个路径,分别是

/mnt/d/download/riscv64/bin

/mnt/d/download/riscv64/bin(重复路径)

/usr/local/sbin:/usr/local/bin

3.不要随便删除和修改PATH中的已有内容。

一般都是增加PATH的路径,而不是删除路径。一旦把原本的路径删没了或者改错了,有些系统命令就无法正确执行,再把PATH恢复回去也很麻烦。

除非你增加PATH路径时写错了(比如引入了奇怪的字符导致一些命令不能正确进行),不然不建议随便修改写好的PATH。

三、如何修改PATH(永久或暂时;增加或修改或删除)?

1.暂时修改

1)添加新的路径

暂时的意思是,这次修改后的PATH值只在当前会话中生效,一旦关闭或重启终端,PATH又恢复之前的值。

在修改前你可以

按照下面命令的格式输入终端即可:

 export PATH=/new/directory/path:$PATH

其中“/new/directory/path”替换成你想添加的路径,比如想要添加路径“/mnt/d/download/riscv64/bin”就输入命令:

 export PATH=/mnt/d/download/riscv64/bin:$PATH

代码的含义是, `PATH` 环境变量在原有值($PATH)的前面添加了新的路径,而`export` 命令将这个更新后的 `PATH` 环境变量导出到当前 shell 会话及其子进程中。会话结束(终端关闭)后PATH又恢复成修改前的值。

2)修改和删除已有的路径

相比于比较麻烦的正则表达式替换过滤啥的,我建议你直接如下修改(执行A、B两步):

A.先看一下原有的PATH值长啥样,把路径完整的复制下来:

echo $PATH

比如上面得到了值 “/usr/local/sbin:/usr/local/bin:/usr/sbin:...",你就把它完整复制下来。

B.在你复制的值前添加你想增加的路径,比如我想增加"/mnt/d/download/riscv64/bin”,就把它附在原路径前面,再加个英文冒号“:”隔开。

接着export PATH="添加后的完整PATH值",即可成功修改PATH。

 export PATH="/mnt/d/download/riscv64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:..."

2.永久修改

永久修改PATH的思路是,直接修改shell的配置文件。

1)在终端直接把待增加的路径写入配置文件

以bash为例,针对单用户的修改,最常见的配置文件是 `~/.bashrc` 或 `~/.bash_profile`。

如果我想把路径“/mnt/d/download/riscv64/bin”增加到原有的PATH上,只需要依次执行下面两行代码:

echo 'export PATH= /mnt/d/download/riscv64/bin:$PATH' >> ~/.bashrc

source ~/.bashrc

第一行命令会将字符串 `export PATH=/mnt/d/download/riscv64/bin:$PATH` 追加到当前用户的 `~/.bashrc` 文件中;第二行命令立即使 `~/.bashrc` 文件中的更改生效。之后修改后的PATH会永久生效。

2)文本编辑器编辑配置文件

先输入如下命令,用文本编辑器打开 `~/.bashrc`文件:

  nano ~/.bashrc

打开后,会发现屏幕上只显示了`~/.bashrc`文件的部分内容。

按键盘上的下箭头“⬇”可以往下阅读(类似平时的鼠标滚轮)。

一直按“⬇”翻到文件底部,在文件的末尾添加如下行:

(请把“/mnt/d/download/riscv64/bin”替换成你想增加的PATH路径)

export PATH=/mnt/d/download/riscv64/bin:$PATH

添加后,按“Ctrl”+“X”即可退出界面。如果问你是否保存修改,输入“Y”,再回车即可。

(下图是打开 `~/.bashrc`文件,翻到文件末尾的截图)

四、PATH写错后,如何修改/恢复?

1.如果你是用3.1节的方法修改的PATH

3.1中的方法直接修改PATH,而没有作用到具体配置文件,这种修改是暂时的。

关闭这个终端,重新再开一个就好。(如果你不确定你的修改是不是暂时的,建议你截图或者保存一下你输入命令的文本,方便后面恢复)

2.如果你是用3.2节的方法修改的PATH

也就是说,你不仅修改了PATH,还把内容写入了配置文件。这种修改是永久的,即使你重启终端PATH的修改也无法撤回。

最好的情况是,你记得你修改了哪个配置文件,用文本编辑器打开,把文件中的"export PATH=..."修改成正确内容就好。

比如在之前的操作中,你只修改了“ `~/.bashrc`”文件中的内容。

于是你可以输入如下命令,用文本编辑器打开 `~/.bashrc`文件:

  nano ~/.bashrc

再一直按“⬇”翻到文件底部,在文件的末尾把“export PATH=...”语句修改成正确内容。

按“Ctrl”+“X”可以退出文本编辑的界面。如果问你是否保存修改,输入“Y”,再回车即可。

如果你不记得你修改了哪些配置文件...那么很抱歉,本篇不能帮你解答这个疑惑。(一个笨办法是把每个配置文件都打开检查一下)

以上就是全部内容啦~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值