LINUX---shell变量(或bash变量)和环境变量的区别

Shell 变量是特定于当前 shell 会话的变量。

作用范围:仅在当前 shell 会话中有效。如果你打开了多个终端窗口,每个窗口都有自己的一组 shell 变量,彼此独立。

生命周期:随着 shell 会话的结束而消失,不会传递给其他 shell 会话。

用途:用于在命令行中暂时存储数据,如临时变量或用于脚本中的数据。

设置方法:可以直接在命令行中设置,或通过脚本进行设置。

环境变量是可以在整个操作系统中被不同程序和进程共享的变量。

作用范围:在整个操作系统中都可见,供不同的程序和进程使用。

生命周期:在操作系统中持续存在,直到系统重启或手动删除。

用途:用于配置操作系统环境,如系统路径、用户配置等。

设置方法:通常通过配置文件(如 /etc/profile、~/.bashrc、~/.bash_profile)进行设置,可以使用 export 命令将 shell 变量导出为环境变量。


PATH环境变量有什么重要作用?

PATH 环境变量具有非常重要的作用。它定义了一系列目录,当用户在命令行输入一个命令时,系统会按照这些目录的顺序来搜索可执行文件。如果在这些目录中找到了对应的可执行文件,系统就会执行它。

主要作用

1.简化命令执行:用户不需要输入完整的路径就能运行程序或脚本。例如,当用户输入 ls 命令时,系统会在 PATH 环境变量定义的目录中搜索名为 ls 的可执行文件。

2.提高效率:通过将常用命令的路径添加到 PATH 中,用户可以在任何目录下直接运行这些命令,而不需要切换到特定目录。

3.灵活性:用户可以根据需要动态修改 PATH 环境变量,添加或移除目录,以适应不同的工作环境。

示例

  • 查看当前 PATH 值 :

    复制代码
    echo $PATH
  • 添加新目录到 PATH :

    复制代码
    export PATH=$PATH:/new/directory/path

通过合理配置 PATH 环境变量,可以大大提高工作效率和操作的便利性。

分别在/etc/profile、~/.bash_profile 和 ~/.bashrc 设置环境变量时有什么区别?

/etc/profile、~/.bash_profile 和 ~/.bashrc 都可以用来设置环境变量,但它们的作用范围和加载时机有所不同:

/etc/profile

作用范围:系统级别。对系统中的所有用户生效。

加载时机:当用户登录时,所有兼容 POSIX 的 shell(如 Bash、sh)都会加载 /etc/profile。

用途:用于设置系统范围的环境变量和执行系统范围的初始化脚本。

~/.bash_profile

作用范围:用户级别。只对当前用户生效。

加载时机:当用户登录时,Bash shell 会加载 ~/.bash_profile。

用途:用于设置用户特定的环境变量和执行用户特定的初始化脚本。通常会包含一行代码来加载 ~/.bashrc,以确保登录 shell 也能加载 ~/.bashrc 中的配置:

~/.bashrc

作用范围:用户级别。只对当前用户生效。

加载时机:每次启动一个新的非登录交互式 shell 时,Bash shell 会加载 ~/.bashrc。例如,当你在终端中打开一个新的 shell 会话时,~/.bashrc 会被加载。

用途:用于设置用户特定的别名、函数和命令提示符等。

加载顺序和关系

登录 shell:当用户登录时,Bash shell 会按以下顺序加载配置文件:

    1. /etc/profile
    2. 用户的 ~/.bash_profile、~/.bash_login 或 ~/.profile(Bash 会按这个顺序查找并加载第一个找到的文件)

非登录交互式 shell:当用户启动一个新的非登录交互式 shell 时,Bash shell 会加载用户的 ~/.bashrc。

相关推荐
测试界的小码农17 小时前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
布裘17 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络
GeW20 小时前
高端化转型进入“补底层”阶段:Linux与数据库的再定位
linux
silent20 小时前
龙芯3B6000M运行Yolov8+FastApi
linux·loongarch·loongnix·龙芯
西西弗Sisyphus21 小时前
理解 Linux 动态库加载:LD_LIBRARY_PATH
linux
AR-26710-21 小时前
Linux Day31——实操启停服务改端口重启
linux·运维
叼烟扛炮1 天前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php
叼烟扛炮1 天前
Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局
linux·网络·网络协议·php·tcpdump
星恒随风1 天前
Linux网络编程:彻底理解IO多路复用select!从fd_set位图、读写就绪到手写TCP多客户端字典服务器
linux·服务器·网络
陈布衣1 天前
MySQL(1)_MySQL 5.7.21 Linux 安装笔记
linux·笔记·mysql