首页 > 技术文章 > Shell-环境变量

mirrorlake 2017-08-31 16:19 原文

declare 显示定义变量的内容

 变量:全局变量 和 局部变量

全局变量:也是环境变量,可以在创建他们的shell及其派生出来的任意子进程shell中使用,环境变量又可分为自定义环境变量和bash内置环境变量

局部变量:也可以称为普通变量,只能在创建它们的shell函数或者shell脚本中使用。不同变量一般有开发者开发脚本程序时创建。

环境变量:

环境变量一般是指用export内置命令导出的变量,用户定义shell的运行环境,保证shell命令的正确执行。shell通过环境变量来确定登录用户名,命令路径,终端类型,登录目录等等。所有的环境变量都是系统全局变量。可用于所有子进程中。包括编辑器,shell脚本和各类应用

可以把变量存在 

用户家目录下: .bash_profile或.bashrc(非用户登录模式特有)

查看变量

set, env ,declare

set: 命令输出所有的变量,包括全局变量和局部变量

env:只显示全局变量

declare:输出所有的变量,函数,和已经导出的变量

set -o命令显示bash shell 的所有参数配置信息

设置环境变量

export :  相同于 declare -x

1.用户环境下环境变量配置:

~/.bashrc : 推荐次文件夹优先

~/.bash_profile

2.全局环境变量的配置

/etc/profile

/etc/bashrc :推荐在此文件中优先设置

/etc/profile.d/

环境 变量 初始化 与 对应 文件 的 生效 顺序
当用户登录Linux系统时,shell会作为登录shell启动。此时的登录shell加载环境变量的顺序:

1. 每个用户登录的时候,都会先执行/etc/profile文件

2.执行第一步之后,系统会执行/etc/profile.d 目录下的脚本文件,比如:设置字符集等等

3.执行$HOME/.bash_profile(用户环境变量文件)

4.执行$HOME/.bashrc(用户环境变量文件),如果存在则执行,如果不存在则不执行。

5.执行/etc/bashrc

注意:如果用户的shell不是登录时启动的(比如手动敲下的bash时或者其他不需要输入密码的登录及远程SSH连接的情况),那么这种非登录shell只会加载$HOME/.bashrc(用户环境变量文件),并且回去找/etc/bashrc(全局环境变量),因此如果希望在非登录shell下也可读到设置的环境变量等内容,就需要将变量设定等写入$HOME/.bashrc或者/etc/bashrc.而不是$HOME/.bash_profile 或者 /etc/profile

提示:

1)$变量名 表示输出变量,可以用$变量名 或者 ${变量名} 两种用法

单引号,双引号,反引号,无引号

 awk 中引用shell变量

 

推荐阅读