环境变量
在 linux 系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not
found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉
及到环境变量 PATH 的设置问题,而 PATH 的设置也是在 linux 下定制环境变量的一个组成部分。
环境变量可以让子程序继续引用的原因,是因为:
- 当启动一个 shell ,操作系统分配一记忆区块给 shell 使用,此区域之变量可以让子程序存
取; - 利用 export 功能,可以让变量的内容写到上述的记忆区块当中(环境变量);
当加载另一个 shell 时 (亦即启动子程序,而离开原本的父程序了),子 shell 3. 可以将父shell 的环境变量所在的记忆区块导入自己的环境变量区块当中。所以环境变量是和 Shell 紧密相关的,用户登录系统后就启动了一个 Shell。对于 Linux 来说一般是 bash,但也可以重新设定或切换到其它的 Shell(使用 chsh 命令)。根据发行版本的情况,bash 有两个基本的系统级配置文件:/etc/bashrc 和/etc/profile。这些配置文件包含两组不同的变量:shell 变量和环境变量。前者只是在特定的 shell 中固定(如 bash),后者在不同 shell 中固定。很明显,shell 变量是局部的,而环境变量是全局的。环境变量是通过 Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于 bash 这个 Shell程序来说,可以通过变量名来访问相应的环境变量,通过 export 来设置环境变量。
Linux环境变量的种类
按环境变量的生存周期来划分,Linux 的环境变量可分为两类:
- 永久的:需要修改配置文件,变量永久生效。
- 临时的:使用export命令行声明即可,变量在关闭shell时失效。
设置变量的三种方法
- 在/etc/profile文件中添加变量对所有用户生效(永久的),用 VI 在文件/etc/profile 文件中增加变量,该变量将会对 Linux 下所有用户有效,并且是“永久生效”。
- 在用户目录下的.bash_profile文件中增加变量对单一用户生效(永久的),用 VI 在用户目录下的.bash_profile 文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
- 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】,在 shell 的命令行下直接使用[export 变量名=变量值]定义变量,该变量只在当前的 shell(BASH)或其子 shell(BASH)下是有效的,shell 关闭了,变量也就失效了,再打开新 shell 时就没有这个变量,需要使用的话还需要重新定义。
常见的环境变量
PATH:决定了 shell 将到哪些目录中寻找命令或程序
HOME:当前用户主目录
MAIL:是指当前用户的邮件存放目录。
SHELL:是指当前用户用的是哪种 Shell。
HISTSIZE:是指保存历史命令记录的条数。
LOGNAME:是指当前用户的登录名。
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
PS1:是基本提示符,对于 root 用户是#,对于普通用户是$。
PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。