• Linux系统中的配置文件和环境变量


    配置文件

    Linux系统中,常用的配置文件包括:

    • 用户级别的配置文件:~/.bashrc
    • 系统级别的配置文件:/etc/profile

    用户级别的配置文件和系统级别的配置文件在功能和作用上存在一些区别:

    1. 用户级别的配置文件:

      位置:通常存储在用户的主目录中,例如 ~/.bashrc

      适用范围:仅对当前用户生效,不会影响其他用户

      使用场景:适用于个人用户自定义的配置,可以设置个人的环境变量、别名、函数等

    2. 系统级别的配置文件:

      位置:通过存储在系统的全局配置目录下,例如 /etc/profile

      适用范围:对系统中所有用户都生效,是全局共享的配置

      使用场景:适用于管理员或系统级别的配置,可以设置系统环境变量、全局别名、系统启动脚本等

    用户级别的配置文件优先级高于系统级别的配置文件,当同一环境变量在用户级别和系统级别同时存在时,用户级别的配置会覆盖系统级别的配置。

    可以通过 vim ~/.bashrcgedit ~/.bashrc 命令来打开并编辑配置文件,vim和gedit都是常用的文本编辑器。

    环境变量

    可以通过 export VARIABLE_NAME=variable_value 将环境变量添加到配置文件中,其中 VARIABLE_NAME 是环境变量名,variable_value 是环境变量的值。

    export PATH=/usr/local/bin:$PATH 是一个设置环境变量的例子,具体解释如下:

    • export:这个关键字用于将变量导出到当前的shell环境中,使其成为环境变量
    • PATHPATH 是一个特殊的环境变量,它包含了一个以冒号分隔的目录列表。操作系统会根据这个环境变量来查找可执行文件的路径。当在终端输入一个命令时,操作系统会在 PATH 定义的目录中按顺序搜索该命令的可执行文件
    • /usr/local/bin:这是一个目录路径,表示将 /usr/local/bin 添加到 PATH 环境变量中。/usr/local/bin 是一个常用的目录,用于存放用户自定义的可执行文件
    • $PATH$PATH 表示已经存在的 PATH 环境变量的值。在这个例子中,将 /usr/local/bin 添加到 PATH 变量的目录列表开头,然后加上原来的值。这样做是为了使得新添加的路径能够先被搜索,以免和其他可能存在的具有相同名称的可执行文件冲突

    总之,export PATH=/usr/local/bin:$PATH 表示将 /usr/local/bin 添加到 PATH 环境变量中,并且保留原来 PATH 的值。这样,当输入命令时,系统会先搜索 /usr/local/bin 目录,然后再按照原来的搜索顺序进行搜索。这样做可以让你在终端中直接运行位于 /usr/local/bin 目录下的可执行文件。

    可以使用 echo $VARIABLE_NAME 命令来验证环境变量是否设置成功。例如,可以运行 echo $PATH 来打印输出 PATH 环境变量的值。

    环境变量的加载顺序

    /etc/environment:在系统启动时被读取,对所有用户和进程都生效。
    /etc/profile:在用户登录时被读取,为所有用户的登录Shell会话设置环境变量。
    ~/.bash_profile:如果存在 ~/.bash_profile 文件,则会优先于 ~/.profile 被读取作为登录Shell的配置文件,它是当前用户的登录Shell个人配置文件。
    ~/.profile:如果不存在 ~/.bash_profile,则会读取 ~/.profile 文件作为登录Shell的配置文件,它也是当前用户的登录Shell个人配置文件。
    ~/.bashrc:默认情况下,Bash Shell在加载时会先读取 ~/.bashrc 文件,然后在该文件中引用(source) ~/.bash_profile~/.profile 文件。

    因此,加载顺序为:

    • /etc/environment -> /etc/profile -> ~/.bashrc -> ~/.bash_profile -> ~/.profile
  • 相关阅读:
    Day41—— 343. 整数拆分 96.不同的二叉搜索树 (动规)
    数据链路层:差错检测
    AWS SAA-C03 #49
    MyBatis
    Python日期处理
    7、Netty核心模块API
    正向代理流程
    C++Qt开发——Linguist语言家
    Crony 一个基于Go语言实现的分布式定时任务管理平台
    MediatRPC - 基于MediatR和Quic通讯实现的RPC框架,比GRPC更简洁更低耦合,开源发布第一版
  • 原文地址:https://blog.csdn.net/weixin_48158964/article/details/132803825