• Windows和Linux的环境变量


    环境变量

    环境变量是程序和操作系统之间的通信方式,本质上是一个字典(键&值均为字符串),存放着某些程序运行时所必要的信息(字典的值一般为各种安装目录的路径,也可以是某些不宜明文写进代码里的内容如数据库密码、个人账户密码等)。

    系统变量 对本机所有用户有效,用户变量 只对当前用户有效,临时变量 仅对当前会话有效。

    Windows

    多个路径名“;(分号)”隔开(使用时需要手动分隔字符串获取多个路径),以“%键%”表示值

    键不区分大小写,除Path键外,获取变量优先级 临时变量 > 用户变量 > 系统变量,即对于某一键,若临时变量中存在,仅返回临时变量值,若临时变量不存在且用户变量存在,仅返回用户变量值,若临时变量和用户变量均不存在,则返回系统变量的值或返回空

    若临时变量存在Path,仅返回临时变量值,否则返回为 系统变量 和 用户变量 值的并集。

    环境变量修改后,需要重新启动cmd、PyCharm等才能获取更新后的环境变量

    可视化

    此电脑->属性->高级系统设置->环境变量,可以看到用户变量和系统变量,在该界面进行新建、编辑和删除即可。

    image-20220730153630939

    命令行

    “组合快捷键Windows + R” + “输入cmd”(普通模式)

    “搜索命令提示符” + “打开”(普通模式)

    “搜索命令提示符” + “以管理员身份运行”(管理员模式)

    image-20220730173707719

    # 获取所以环境变量
    > set
    
    # 获取某一个环境变量
    > echo %TEMP%
    C:\Users\shang\AppData\Local\Temp
    
    # 添加/修改临时变量
    > set=# 为存在的临时变量增加值(不存在键时不要使用,否则将把 '%键%;值' 作为第一个值而不是解析 %键%然后添加值)
    > set=%键%;# 设置用户变量(永久)
    > setx 键 值
    > setx 键 %键%;# 设置系统变量(永久,需要管理员模式运行)
    > setx 键 值 /m
    > setx 键 %键%;值 /m
    
    # 删除用户变量
    reg delete HKEY_CURRENT_USER\Environment /f /v 键
    # 删除系统变量(需要管理员模式运行)
    reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v 键
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    Python

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3xbqJEp-1659197546874)(…/AppData/Roaming/Typora/typora-user-images/image-20220730205720690.png)]

    image-20220730205741807

    image-20220730212450857

    # os.environ是一个字典,适用dict的所有函数
    # 对os.environ的增删改操作 仅是对运行中字典的操作,不会影响外面的 临时变量、用户变量、系统变量
    
    # 获取(优先级 临时变量 > 用户变量 > 系统变量)
    # 存在键返回,不存键报错
    os.environ["TMP"]
    # 存在键返回,不存在键返回None
    os.environ.get("TMP")
    # 等效于os.environ.get
    os.getenv("TMP")
    # "TMP"是否存在
    "TMP" in os.environ
    # 打印所有环境变量
    for item in os.environ:
        print(f"{item} {os.environ[item]}")
        
    # 设置(必成功)
    os.environ['环境变量名称']='环境变量值'
    # 若已存在'环境变量名称'则设置失败,返回已存在的对应值;
    # 若未存在'环境变量名称'则设置成功,返回'环境变量值'
    os.environ.setdefault('环境变量名称', '环境变量值')
    
    # 删除
    del os.environ['环境变量名称']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    Linux

    多个路径名“:(冒号)”隔开(使用时需要手动分隔字符串获取多个路径),以“$键”表示值,键区分大小写。

    登录系统前,linux不包含任何环境变量。登录系统时,自动执行"source /etc/bash.bashrc"使系统变量生效(其中的export语句将被执行到),自动执行"source ~/.bashrc"使用户变量生效(其中的export语句将被执行到)。这两个命令也可以在命令行中手动执行多次,在命令行中直接执行"export 键=值:$键"使临时变量生效。对于同名的临时变量、用户变量、系统变量,后生效的值将覆盖掉先生效的值。

    例如:

    /etc/bash.bashrc中包含"export TTT=1111111111111111111: T T T " ,  / . b a s h r c 中包含 " e x p o r t T T T = 2222222222222222222 : TTT",~/.bashrc中包含"export TTT=2222222222222222222: TTT" /.bashrc中包含"exportTTT=2222222222222222222:TTT",登录系统前没有环境变量TTT,自动执行完"source /etc/bash.bashrc"后TTT为"1111111111111111111:“,自动执行完"source ~/.bashrc"后TTT为"2222222222222222222:1111111111111111111:”,若我们再手动执行一次"source ~/.bashrc",那么TTT为"2222222222222222222:2222222222222222222:1111111111111111111:"。

    /etc/bash.bashrc中包含"export TTT=1111111111111111111: T T T " ,  / . b a s h r c 中包含 " e x p o r t T T T = 2222222222222222222 " ,登录系统前没有环境变量 T T T ,自动执行完 " s o u r c e / e t c / b a s h . b a s h r c " 后 T T T 为 " 1111111111111111111 : " ,自动执行完 " s o u r c e   / . b a s h r c " 后 T T T 为 " 2222222222222222222 " ,若我们在手动执行一次 " e x p o r t T T T = 3333333333333333333 : TTT",~/.bashrc中包含"export TTT=2222222222222222222",登录系统前没有环境变量TTT,自动执行完"source /etc/bash.bashrc"后TTT为"1111111111111111111:",自动执行完"source ~/.bashrc"后TTT为"2222222222222222222",若我们在手动执行一次"export TTT=3333333333333333333: TTT" /.bashrc中包含"exportTTT=2222222222222222222",登录系统前没有环境变量TTT,自动执行完"source/etc/bash.bashrc"TTT"1111111111111111111:",自动执行完"source /.bashrc"TTT"2222222222222222222",若我们在手动执行一次"exportTTT=3333333333333333333:TTT",那么TTT为"3333333333333333333:2222222222222222222"。

    命令行

    # 获取所以环境变量
    > envprintenv
    
    # 获取某一个环境变量
    > echo $LANGUAGE
    zh_CN:zh
    
    # 设置用户变量
    sudo gedit /etc/bash.bashrc
    # 在其中添加	export 键=值:$键 或 export 键=值
    source /etc/bash.bashrc
    
    # 设置系统变量
    sudo gedit ~/.bashrc
    # 在其中添加	export 键=值:$键 或 export 键=值
    source ~/.bashrc
    
    # 设置临时变量
    export=值:$键
    或
    export=
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    Python

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tWi8QLh3-1659197546878)(…/AppData/Roaming/Typora/typora-user-images/image-20220730205720690.png)]

    image-20220730205741807

    image-20220730212450857

    # os.environ是一个字典,适用dict的所有函数
    # 对os.environ的增删改操作 仅是对运行中字典的操作,不会影响外面的 临时变量、用户变量、系统变量
    
    # 获取(优先级 临时变量 > 用户变量 > 系统变量)
    # 存在键返回,不存键报错
    os.environ["TMP"]
    # 存在键返回,不存在键返回None
    os.environ.get("TMP")
    # 等效于os.environ.get
    os.getenv("TMP")
    # "TMP"是否存在
    "TMP" in os.environ
    # 打印所有环境变量
    for item in os.environ:
        print(f"{item} {os.environ[item]}")
        
    # 设置(必成功)
    os.environ['环境变量名称']='环境变量值'
    # 若已存在'环境变量名称'则设置失败,返回已存在的对应值;
    # 若未存在'环境变量名称'则设置成功,返回'环境变量值'
    os.environ.setdefault('环境变量名称', '环境变量值')
    
    # 删除
    del os.environ['环境变量名称']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    cpp primer plus笔记012-STL模板库
    Java——Map,Set
    C++ malloc 与 new 的区别
    BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
    【毕设教学】 经典单片机控制算法:PID - 嵌入式 物联网
    Redis数据结构:列表
    信息学奥赛一本通 1262:【例9.6】挖地雷 动态规划基本型
    消息队列 rabbitmq
    IDEA整合Tomcat服务器、如何创建Web工程、Web工程目录的介绍
    蓝桥等考Python组别八级004
  • 原文地址:https://blog.csdn.net/qq_42283621/article/details/126079764