文章目录

  • 说明
  • 查看、添加、修改PATH环境变量
  • 一. 添加环境变量
  • 二. 环境变量改名
  • 三.环境变量删除


说明

在讲环境变量之前,先介绍一下命令which,它用于查找某个命令的绝对路径,示例如下:

wsl echo path 加错了_重启


在上面的示例中,用which查到rm命令的绝对路径为/usr/bin/rm。

那么问题来了:为什么我们使用命令时,只是直接打出了命令,而没有使用这些命令的绝对路径呢?
答:环境变量PATH在起作用。

PATH环境变量存储的是路径,当我们在命令行下输入一个命令如ls时,linux就会PATH表示的路径中查找
变量写入到 .bash_profile 中,相当于每次我们打开一个终端都会执行一次环境变量。

可以输入echo $PATH查看当前环境变量,其中以分号隔开。

wsl echo path 加错了_wsl echo path 加错了_02

查看、添加、修改PATH环境变量

一. 添加环境变量

(Bash shell中用export,C shell中用setenv)

  • 1.直接在终端修改当前生效

export PATH=$PATH:.(其中export可不要,.是当前目录的意思,也可以自定义绝对路径)

配置完后可以通过echo $PATH查看配置结果。

生效方法:立即生效

有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置

用户局限:仅对当前用户

wsl echo path 加错了_wsl echo path 加错了_03

  • 2.对用户生效
    因为写入到 .bash_profile 中的,而.bash_profile中是调用/.profile,所以可以直接在/.profile中定义变量
  • wsl echo path 加错了_path变量_04

  • 在home/用户/.profile中修改调用文件:vi ~/.bashrc
    #在最后一行添上
    export PATH=路径:$PATH 生效方法:(有以下两种)
    1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
    2、输入“source ~/.bashrc”命令,立即生效
    使用 echo $PATH 看不到定义变量
    有效期限:永久有效
    用户局限:仅对当前用户
  • wsl echo path 加错了_PATH添加变量_05

  • 3.修改系统级

vi /etc/profile/profile

export PATH=$PATH:路径

保存文件,重启即可(有的系统执行./profile即可,不需重启;有的系统必须重启)

重启后可查看PATH环境变量看是否更改:

echo $PATH 我在root用户下系统不允许我写入,没有深究,所以该条pass

wsl echo path 加错了_环境变量_06

  • 4.永久生效
  • 第一种方法
    通过修改profile文件:
    vi /etc/profile
    在最后一行添加
    export PATH=系统路径(echo $PATH 查看复制在这):新路径:$PATHecho $PATH 看得到定义环境
    生效方法:系统重启
    有效期限:永久有效
    用户局限:对所有用户
    注:下图中我忘记在路径后面加上:$PATH了,不过好像没报错,但还是建议加上!!!!
  • wsl echo path 加错了_重启_07

  • 第二种方法
    通过修改environment文件:
    vi /etc/environment
    echo $PATH 看不到定义环境
    生效方法:系统重启
    有效期限:永久有效
    用户局限:对所有用户
  • 里面可能有:PATH="系统路径" 如果有则PATH="系统路径:新路径"
  • 如果没有,则需要先echo $PATH查看自己当前的变量,然后复制进去,系统路径:新路径
  • 如果不加系统路径,重启后就会只剩下 你定义的变量 其他的全部不在了,然鹅你的系统也没法正常使用了!!!(下翻有解决方法)
  • 真发生了这种事后,解决方法,找一台正常的机器,echo $PATH ,然后复制,在问题服务器上临时定义一下:
    PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 然后vi /etc/environment ,把刚才那段环境加进去, 如果vim /etc/profile(第一种方法) 里面也不是全路径,也需要修改为全路径(参考第一种方法) 然后 重启!!!搞定

二. 环境变量改名

echo ${path/old_name/new_name} #变更一个目录名old_nameecho ${path//old_name/new_name} #变更所有目录名old_name

亲测无用,可能是我方法不对

wsl echo path 加错了_path变量_08


如果要修改,建议用下面方法

单独用户:vi ~/.bashrc 在里面修改

全部用户:vi /etc/profile or vi /etc/environment 在哪配置了在哪修改

三.环境变量删除

echo ${path#/deletion_name:} 亲测 无用,可能是我方法不对

wsl echo path 加错了_PATH添加变量_09


临时定义不用删除 重新打开窗口即消失

如果要删除永久的,建议用下面方法

单独用户:vi ~/.bashrc 在里面删除

全部用户:vi /etc/profile or vi /etc/environment 在哪配置了在哪删除