Linux环境变量的设置
最近写shell脚本遇到环境变量的使用,比如echo $PATH输出默认路径,echo $HOME输出主目录,在实际项目中,可以把经常使用的目录写成环境变量,在shell脚本中直接使用。
按变量的生存周期来划分,Linux变量可分为两类:
临时:使用export命令声明即可,变量在关闭shell时失效。下图为在terminal临时定义环境变量MYLOG是/root/log目录,然后再接下里直接可以使用这个环境变量。
永久:如果在关闭shell之后,或者电脑重启后这个环境变量依然失效呢,这个时候就需要修改配置文件,变量永久生效。
export 可以读取环境变量的值,后面加上变量可单独输出某个环境变量export $SHELL。
永久环境变量配置文件又分为只能单个用户使用的用户环境变量,和所有用户使用的系统环境变量。
1、用户环境变量 .profile .bashrc
笔者查看root目录下有两个隐藏文件 .profile .bashrc,可以直接其中一个文件末尾输入MYLOG=/root/log,然后重新打开shell或者 source ~/.bashrc 或者 . ~/.bashrc就可以了。
profile 是某个用户唯一的用来设置环境变量的地方,bashrc是专门用来给 bash 做初始化的的环境设置。
仔细观察文件,.profile文件的内容其实是判断 .bashrc存在,然后执行这个文件,.profile文件只在用户登录的时候读取一次,而/.bashrc会在每次运行Shell脚本的时候读取一次。笔者查看红帽系统还有.bash_profile文件,ubuntu则只有上诉两个文件。用户环境变量中,系统会首先读取~/.bash_profile文件,如果没有该文件则读取~/.bash_login,如果也没有该文件,则读取~/.profile,根据这些文件中内容再去读取~/.bashrc。
.bashrc里面有很重要的别名设置,比如下面的 ll la l 快捷命令。
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
2、系统环境变量 /etc/environment /etc/bash.bashrc /etc/profile /etc/profile.d
在/etc/environment 或/etc/bash.bashrc 或/etc/profile 文件最后一行加上MYLOG=/root/log ,或者在或 /etc/profile.d目录下新建个sh文件写入MYLOG=/root/log ,然后重新打开shell就可以了。
仔细观察文件/etc/profile,其实是判断/etc/bash.bashrc 和/etc/profile.d存在,然后执行文件/etc/bash.bashrc 和遍历执行/etc/profile.d目录中的sh文件。
目前ubuntu的/etc/environment文件里面只有默认路径的内容: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
接下来,在脚本中就可以直接用$MYLOG 来代替目录/root/log。
上面几个环境变量的设置文件是有执行顺序的:
1、/etc/environment
2、/etc/profile
3、/etc/bash.bashrc
4、/etc/profile.d/*.sh
5、~/.profile
6、~/.bashrc