值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。
环境变量
linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。环境变量可以让子程序继续引用的原因,是因为:
-
当启动一个 shell ,操作系统分配一记忆区块给 shell 使用,此区域之变量可以让子程序存取;
-
利用 export 功能,可以让变量的内容写到上述的记忆区块当中(环境变量);
当加载另一个 shell 时(亦即启动子程序,而离开原本的父程序了子 shell ),可以将父shell 的环境变量所在的记忆区块导入自己的环境变量区块当中。所以环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell(使用chsh命 令 )。根据发行版本的情况,bash有两个基本的系统级配置文件:/etc/bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在特定的shell中固定(如bash), 后者在不同shell中固定。很明显,shell变量是局部的,而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。
环境变量在 Linux 系统中起着重要的作用,它们可以影响命令的执行、程序的行为以及用户的工作环境。了解不同类型的环境变量有助于更好地管理和配置 Linux 系统。注:Linux的环境变量名称一般使用大写字母。
Linux环境变量的分类
在 Linux 中,环境变量主要有以下几种类型:
1、系统级环境变量
定义:由操作系统或系统启动脚本设置的环境变量,对整个系统的所有用户和进程都有效。
常见的系统级环境变量:
PATH:指定命令搜索路径,当你在终端输入一个命令时,系统会在PATH变量指定的目录中查找该命令的可执行文件。
HOME:表示用户的主目录路径。
LANG:设置系统的语言环境。
TERM:定义终端类型。
PWD:当前工作目录的路径。
2、用户级环境变量
定义:由用户在其个人的启动脚本(如.bashrc、.profile等)中设置的环境变量,只对该用户有效。
设置方式:用户可以通过编辑自己的 shell 启动脚本文件,添加或修改环境变量的定义。例如,在 Bash shell 中,可以在.bashrc文件中添加export VARIABLE_NAME=value来设置一个用户级环境变量。
作用范围:仅在该用户的登录会话和其所启动的进程中可见。
3、临时环境变量
定义:在当前 shell 会话中临时设置的环境变量,只在当前 shell 及其子进程中有效,当 shell 会话结束时,这些变量就会消失。
设置方式:可以使用export命令在命令行中直接设置临时环境变量。例如,export TEMP_VAR=some_value将设置一个名为TEMP_VAR的临时环境变量。
用途:通常用于在特定的任务或脚本执行期间临时修改环境变量的值,而不影响系统的整体配置或其他用户。
设置环境变量的方法
Linux中一般有3种方法设置环境变量,根据不同的需求设置环境变量,使其在不同的范围和时间内有效。在设置环境变量时,要注意变量名的唯一性和合法性,避免与系统已有的环境变量冲突:
1、在 shell 中临时设置
使用export命令:
在当前 shell 会话中,可以直接使用export命令来设置环境变量。例如,export MY_VARIABLE=value将设置一个名为MY_VARIABLE的环境变量,其值为value。
这种设置方式是临时的,仅在当前 shell 会话及其子进程中有效。当 shell 会话结束时,这个环境变量就会消失。
2、在用户的 shell 启动脚本中设置
Bash shell:
对于 Bash shell,用户可以编辑/.bashrc或/.profile文件来设置环境变量。这些文件在用户登录时被读取,从而使设置的环境变量在每次用户登录后的所有 shell 会话中都有效。
在文件中添加类似export MY_VARIABLE=value的行来设置环境变量。设置完成后,保存文件并重新打开一个终端或使用source ~/.bashrc(或source ~/.profile)命令使设置生效。
其他 shell:
不同的 shell 有不同的启动脚本。例如,对于 Zsh shell,用户可以编辑~/.zshrc文件来设置环境变量。
3、在系统级配置文件中设置
/etc/profile和/etc/environment:
在 Linux 系统中,/etc/profile是系统级的 shell 启动脚本,它在系统启动时被执行,用于设置一些系统级的环境变量和执行一些系统级的初始化任务。
/etc/environment文件也可以用于设置系统级的环境变量,但它的格式与/etc/profile略有不同。这个文件中的环境变量以 “变量名 = 值” 的形式列出,没有 shell 脚本的语法。
只有具有管理员权限的用户才能编辑这些文件。修改后,新的设置将在系统重启或用户重新登录后生效。
环境变量设置命令
1、export 命令
功能:用于在当前 shell 中设置或导出环境变量,使其对当前 shell 及其子进程可见。
用法:
export VARIABLE_NAME=value:
设置一个新的环境变量并赋值。例如,export MYVAR=123将设置环境变量MYVAR的值为 123。
export VARIABLE_NAME:如果只指定变量名而不赋值,它将把已有的同名变量导出到当前 shell 的环境中,使其对子进程可见。例如,如果在一个脚本中设置了一个变量,然后在该脚本中使用export VAR,那么在该脚本启动的其他程序中将可以访问VAR这个环境变量。
2、set 命令
功能:显示当前 shell 中的所有变量,包括环境变量、局部变量和 shell 变量等。
用法:
set:执行该命令将列出当前 shell 中的所有变量及其值。可以通过查看输出找到特定的环境变量。
3、env 命令
功能:显示当前系统中的所有环境变量。
用法:
env:执行该命令将列出系统中的所有环境变量及其值。这对于查看当前系统的环境设置非常有用。
4、declare 命令
功能:用于声明变量,包括环境变量。可以设置变量的属性,如类型、只读等。
用法:
declare -x VARIABLE_NAME=value:
声明一个新的环境变量并赋值。例如,declare -x MYENV=456将设置环境变量MYENV的值为 456。
declare -r VARIABLE_NAME:
将一个已有的变量声明为只读,防止其值被修改。例如,declare -r PATH将使PATH环境变量变为只读。
本篇完結。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者。