前言
一直在Linux环境下部署环境,而环境变量配置是最基础的知识,那么是否你真的懂得如何配置呢?
一个普通用户登录后为啥能够执行常规的系统命令,比如ls,cd,这里不讲解Linux系统如何优先读取各种配置文件,下面以bash shell的.bash_profile来展开一些知识。
系统默认环境变量
当一个用户登录Linux系统的bash环境后,如何查看默认的环境变量
$ env
这里你会看见几个比较常用的变量值
HOSTNAME=centos6-testSHELL=/bin/bashTERM=xtermHISTSIZE=1000USER=testerzhangHOME=/opt/testerzhangPATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/testerzhang/binLANG=en_US.UTF-8
变量值说明:
- HOSTNAME: 主机名
- SHELL: 使用的SHELL
- USER:当前用户名
- HOME:当前用户的家目录
- PATH:寻找命令的路径列表,注意在LINUX系统下用:分割表示并列
- LANG: 语言环境
变量值例子:
$ cd $HOME
- 常用命令-根据$PATH路径进行遍历查找是否有这个命令
$ which lsalias ls='ls --color=auto' /bin/ls
如果命令不在默认的路径下,则会提示command not found
$ lsd-bash: lsd: command not found
常用配置
下面以配置在.bash_profile为例。
export JAVA_HOME=$HOME/3rd/jdk1.8.0_171export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATH
注意:
- 这里的PATH赋值必须要有:$PATH,否则如果生效环境变量,会找不到系统默认命令比如ls,vi。 一旦误操作,需要管理员修改该用户的.bash_profile才可恢复正常。
- PATH的值注意先后顺序,如果变成export PATH=$PATH:$JAVA_HOME/bin,而操作系统已经安装jdk1.7,那么你执行java命令的时候使用的是系统的JAVA程序,而不是普通用户自己配置的jdk1.8.
export PYTHONHOME=$HOME/3rd/Python-2.7.11export PYTHONPATH=$PYTHONHOME/lib/python2.7export PYTHONUNBUFFERED=1export PATH=$PYTHONHOME/bin:$PATHexport LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH
说明:
1.LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。一般c++写的程序用ldd可以查看链接的动态库是多少。
2. LD_LIBRARY_PATH环境变量同样是从配置的先后顺序开始遍历,需要注意配置项值的先后顺序。
别名名字可以任意定义,但是不建议和常用的命令冲突,除非你的原本意愿就是覆盖它.
- 比如查看当前用户的进程,可以简单变成一个新的命令pg
alias pg='ps -ef|grep aiwm'
- 想进入一个经常进入的目录,可以简单变成一个新的命令cdci
alias cdci='cd /opt/testerzhang/.jenkins/workspace'
- grep 搜索的时候显示彩色的关键字
alias grep='grep --exclude=*.o --exclude=*.so --exclude=*tags* -I --color '
如果我们需要更改默认的ulimit配置,我们可以在.bash_profile里直接加入一些常规的性能配置项,比如:
ulimit -s 2048ulimit -c 0