
Linux系统下最重要的10个环境变量:
变量名称 作用HOME 用户的主目录(即家目录)。
SHELL 用户在使用的SHELL解释器名称。
HISTSIZE 历史命令记录条数。
HISTFILESIZE 历史命令记录条数。
MAIL 邮件信箱文件保存路径。
LANG 系统语言、语系名称。
RANDOM 生成一个随机数字。
PS1 bash解释器的提示符。
PATH 定义解释器搜索用户执行命令的路径。
EDITOR 用户默认的文本编辑器。
Linux系统为了能够为每个用户提供独立的、合适的工作运行环境,因此在不同的用户身份下提取一个相同的变量也可能会获得不同的值,例如查看下HOME变量在不同用户身份下的值都有那些吧(su是用于切换用户身份的命令,将在第5章跟大家见面~):
[root@linuxprobe ~]# echo $HOME
/root
[root@linuxprobe ~]# su - linuxprobe
Last login: Fri Feb 27 19:49:57 CST 2017 on pts/0
[linuxprobe@linuxprobe ~]$ echo $HOME
/home/linuxprobe
其实变量是由固定的变量名与用户或系统设置的变量值两部分组成的,如果工作需要完全可以自己手工创建的,例如设置一个名称为WORKDIR的变量,方便用户更轻松的进入一个很深层的目录:
[root@linuxprobe ~]# mkdir /home/workdir
[root@linuxprobe ~]# WORKDIR=/home/workdir
[root@linuxprobe ~]# cd $WORKDIR
[root@linuxprobe workdir]# pwd
/home/workdir
但是这样的变量不具有全局性,作用范围也是有限的,默认不能够被其他用户使用的,如果工作需要的话咱们可以使用export命令将其提升为全局变量,这样其他的用户也就可以使用到这个变量了,这里涉及的一些基础命令可以参阅《Linux就该这么学》
[root@linuxprobe workdir]# su linuxprobe
Last login: Fri Mar 20 20:52:10 CST 2017 on pts/0
[linuxprobe@linuxprobe ~]$ cd $WORKDIR
[linuxprobe@linuxprobe ~]$ echo $WORKDIR
[linuxprobe@linuxprobe ~]$ exit
[root@linuxprobe ~]# export WORKDIR
[root@linuxprobe workdir]# su linuxprobe
Last login: Fri Mar 20 21:52:10 CST 2017 on pts/0
[linuxprobe@linuxprobe ~]$ cd $WORKDIR
[linuxprobe@linuxprobe workdir]$pwd
/home/workdir
Shell变量有局部变量、环境变量之分。局部变量就是指在某个Shell中生效的变量,只在此次登录中有效。环境变量通常又称“全局变量”,虽然在Shell中变量默认就是全局的,但是为了让子Shall继承当前Shell的变量,需要使用export内建命令将其导出为环境变量。
按变量的生存周期划分:
永久的:需要修改配置文件,变量永久生效。
临时的:使用export命令声明即可,变量在关闭shell时失效。
在配置永久的环境变量时,又可以按照作用范围分为:
用户环境变量
系统环境变量。
系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效。
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
它也是全局(公有)的 bash执行时,不管是何种方式,都会读取此文件。
不要轻易修改此文件
用户环境变量通常被存储在下面的文件中:
若bash是以login方式执行时,读取 ~/.bash_profile ,若它不存在,则读取 ~/.bash_login ,若前两者不存在,读取 ~/.profile 。
若bash是以login方式执行时,读取 ~/.bash_profile ,若它不存,则读取 ~/.bash_login ,若前两者不存在,读取 ~/.profile 。
只有bash是以login形式执行时,才会读取.bash_profile,Unbutu默认没有此文件,可新建。 通常该配置文件还会配置成去读取 ~/.bashrc 。
当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
如想将一个路径加入到环境变量(例如$PATH)中,可以像下面这样做(修改/etc/profile):
你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:
bash会在用户登录时,读取下列四个环境配置文件:
全局环境变量设置文件: /etc/profile 、 /etc/bashrc 。 用户环境变量设置文件: ~/.bash_profile 、 ~/.bashrc 。
读取顺序:① /etc/profile 、② ~/.bash_profile 、③ ~/.bashrc 、④ /etc/bashrc 。
2 .bashrc 和 .bash_profile 的区别
.bash_profile 会用在登陆shell, .bashrc 使用在交互式非登陆 shell 。简单说来,它们的区别主要是 .bash_profile 是在你每次登录的时候执行的; .bashrc 是在你新开了一个命令行窗口时执行的。
当通过控制台进行登录(输入用户名和密码):在初始化命令行提示符的时候会执行.bash_profile 来配置你的shell环境。但是如果已经登录到机器,在Gnome或者是KDE也开了一个新的终端窗口(xterm),这时,.bashrc会在窗口命令行提示符出现前被执行。当你在终端敲入/bin/bash时.bashrc也会在这个新的bash实例启动的时候执行。
所以对于我自己,我写了一个 .pathrc 文件
然后在 .bashrc , .zshrc , .bash_profile , /etc/profile 中都加了
下面是 .pathrc 文件
现在,当你从控制台登录机器的时候,.bashrc就会被执行。
四、常用的环境变量
BASH Bash Shell的全路径
CDPATH 用于快速进入某个目录。
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
Reference
[1] /etc/profile、/etc/bashrc、 /.bash_profile、 /.bashrc
http://blog.chinaunix.net/uid-26435987-id-3400127.html
[2] Linux如何修改env看到的环境变量? .bashrc和.bash_profile区别
http://blog.csdn.net/xifeijian/article/details/13355031
[3] linux环境变量,bashrc与bashprofile
http://blog.sina.com.cn/s/blog_43e5ad4e0101ei43.html
设置Linux的环境变量的方法是这样的,首先可以在终端直接输入:变量名=内容 的方式来临时设置,但是这种方式设置的效果在重新登录后就失效了。所以环境变量的设置一般是写在配置文件中,那对环境变量的修改应该写在哪个配置文件中呢?如果想让设置只对当前用户有效,就需要在~/.bashrc文件中添加设置,以修改PATH这个环境变量为例,需要在~/.bashrc这个配置文件添加的内容格式就像是如下两行这样:
PATH="$PATH":/root
export PATH
也可以将两行设置写成一行:
export PATH="$PATH":/root
如果想让环境变量的设置对所有用户都有效,则需要把设置添加到/etc/profile这个全局配置文件中,添加的格式和~/.bashrc这个文件一样。
最后,修改完配置文件后,如果想让设置马上生效,还需要运行source命令,比如:source ~/.bashrc,否则设置只在下次登录时才会生效(也就是说要重新登录)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)