目录
1.不是"C:/""D:/",而是“/mnt/d”,"/mnt/c"。
一、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”,再回车即可。
如果你不记得你修改了哪些配置文件...那么很抱歉,本篇不能帮你解答这个疑惑。(一个笨办法是把每个配置文件都打开检查一下)
以上就是全部内容啦~~