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 会按以下顺序加载配置文件:
-
- /etc/profile
- 用户的 ~/.bash_profile、~/.bash_login 或 ~/.profile(Bash 会按这个顺序查找并加载第一个找到的文件)
非登录交互式 shell:当用户启动一个新的非登录交互式 shell 时,Bash shell 会加载用户的 ~/.bashrc。