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。

相关推荐
破-风2 小时前
linux的用法
linux·运维·服务器
涛ing5 小时前
32. C 语言 安全函数( _s 尾缀)
linux·c语言·c++·vscode·算法·安全·vim
__雨夜星辰__5 小时前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
大耳朵土土垚5 小时前
【Linux】日志设计模式与实现
linux·运维·设计模式
深度Linux10 小时前
Linux网络编程中的零拷贝:提升性能的秘密武器
linux·linux内核·零拷贝技术
chian-ocean14 小时前
从理论到实践:Linux 进程替换与 exec 系列函数
linux·运维·服务器
拎得清n14 小时前
UDP编程
linux
敖行客 Allthinker14 小时前
从 UTC 日期时间字符串获取 Unix 时间戳:C 和 C++ 中的挑战与解决方案
linux·运维·服务器·c++
夏尔Gaesar16 小时前
Vim安装与配置教程(解决软件包Vim没有安装可候选)
linux·编辑器·vim
hunter20620616 小时前
如何监控ubuntu系统某个程序的运行状态,如果程序出现异常,对其自动重启。
linux·chrome·ubuntu