2)~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.
(注:这个文件是 .开头的,所以在文件夹中被隐藏了) 那么我们如何添加自己定义的环境变量呢? 用记事本打开这个文件,然后在里面最后写上: xiaokang=kangkang
然后保存,这样每次打开一个新的terminal的时候,我们这个变量就生效了。记住,如果你已经打开一个terminal,然后你修改了这个文件,那么在这个terminal下是不会生效的。一般情况用户最好在这里进行修改,但是有时候会覆盖父级的变量,比如PATH是ROOT设定的,但是如果你在这个文件里面写了PATH=xx,那么将来所有的PATH都成了xx了,所以我们应该在这个文件中写为: PATH=$PATH:xx
这样就把原来的和你自己的一起加上了。而且注意在LINUX系统下用:分割表示并列,而不是windo的;
3和4都是在用户目录下的,他们唯一的不同是: .bash_profile只能在登录的时候启动一次。在我的Ubuntu里面这个3文件似乎没有。
3)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是/\父子/\关系. ~/.bash_profile 是交互式、login 方式进入 bash 运行的 ~/.bashrc 是交互式 non-login 方式进入 bash 运行的 通常二者设置大致相同,所以通常前者会调用后者。
通过上面的文件介绍,就能明白我们需要设置环境变量的时候,需要修改什么文件,要想对所有的用户生效,那就需要设置系统级的环境变量。反之,需要修改用户级的文件(最好是修改.profile文件,理由上面已经讲了)。 另外,总结一下他们的执行方式:
当你登录并且登录shell是bash时,bash首先执行/etc/profile文件中的命令(如果该文件存在),然后它顺序寻找~ /.bash_profile,~/.bash_login或~/.profile文件,并执行找到的第一个可读文件中的命令.当登录bash退出时,它 将执行~/.bash_logout文件中的命令.
当启动一个交互的bash时,它将执行~/.bashrc文件中的命令(如果该文件存在并且可读).当非交互地启动以运行一个shell脚本时,bash将查找bash_env环境变量,确定执行文件的名称.
4.Linux的环境变量详解(值得推荐)
按变量的生存周期来划分,Linux变量可分为两类,它们的修改方法如下: (1)永久的:需要修改配置文件,变量永久生效。 常见的配置文件包括:
(1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置 例如:编辑/etc/profile文件,添加CLASSPATH变量 # vi /etc/profile 添加一行:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效
(1-2)/etc/bashrc:对所有用户生效;为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取 编辑方法如上,不再赘述
(1-3)~/.bash_profile:仅会对当前用户有效;每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次
例如:编辑guok用户目录(/home/guok)下的.bash_profile $ vi /home/guok/.bash.profile 添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效
(1-4)~/.bashrc:仅会对当前用户有效;该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取 编辑方法如上,不再赘述
另外,~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是\父子\关系
综述,对上述文件修改,添加你需要的变量,在启动一个shell(终端,terminal)时,你所定义的变量均会生效的。
(2)临时的:使用export命令声明即可,变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,在关闭shell后失效,再打开新shell时就没有这个变量,需要使用的话还需要重新定义
在shell的命令行下直接使用[export 变量名=变量值] 定义变量
环境变量的查看
(1)使用echo命令查看单个环境变量。例如: echo $PATH
(2)使用env查看所有环境变量。例如: env
(3)使用set查看所有本地定义的环境变量。例如: set
另外,unset可以删除指定的环境变量。
常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数
LOGNAME 当前用户的登录名 HOSTNAME 指主机的名称 SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量 MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
5.Linux的环境变量详解(值得借鉴)
例题: Linux下修改/设置环境变量JAVA_HOME
export设置只对当前的bash登录session有效。这是存在内存里面的。
你可以写入文件一般的文件。之后source它。或者放到/etc/profile 等等的位置里,不同的地方效果不同。
1. 永久修改,对所有用户有效 # vi /etc/profile
//按键盘[Shift + g], 在profile文件最后添加下面的内容: export JAVA_HOME = /home/myuser/jdk1.7.0_03 export PATH = $JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar [注]:修改文件后如果想马上生效,还要运行 #source /etc/profile
2. 永久修改,对单一用户有效
//修改用户目录下的.bash_profile文件 $ vi /home/myuser/.bash_profile //在文件最后添加下面的内容
export JAVA_HOME = /home/myuser/jdk1.7.0_03 export PATH = $JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar [注]:修改文件后如果想马上生效,还要运行 #source /home/myuser/.bash_profile
3. 只对当前bash /shell 生效
$ export JAVA_HOME = /home/myuser/jdk1.7.0_03 $ export PATH = $JAVA_HOME/bin:$PATH
$ export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar