linux /etc/profile文件的改变会涉及到系统的环境,也就是有关Linux环境变量的东西,学习Linux要了解Linux profile文件的相关原理,这里对则以文件进行具体分析。这里修改会对全部用户起做用。linux
一、Linux是一个多用户的操做系统。每一个用户登陆系统后,都会有一个专用的运行环境。一般每一个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户能够对本身的运行环境进行定制,其方法就是修改相应的系统环境变量。shell
二、常在/etc/profile文件中修改环境变量,在这里修改的内容是对全部用户起做用的。如下主要操做将在该文件中进行。bash
三、如何添加环境变量。eclipse
例如添加”NAME=liheng“ 。在profile文件的最后添加以下内容export NAME=lihengjvm
变量值liheng能够加引号也能够不加,效果同样。学习
四、在profile文件添加或修改的内容须要注销系统才能生效。操作系统
五、重复定义变量怎样理解。code
常常出现的是对PATH变量的定义。ip
例如:在peofile文件默认对PATH变量都有设置PATH=¥¥¥¥¥¥¥(记不住了),在之后可能在对PATH设置,通常都加在profile 文件的最后PATH=······(打个比方)。而系统之中认定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是说相同名字的环境变量,后写入的先起做用(通俗地讲)。你们必定要注意。字符串
六、特殊字符介绍。
例如在profile中有以下内容,经过如下内容说明特殊符号的用法。
export A=/q/jing:aaa/cc/ld
export B=.:/liheng/wang export A=/cd/cdr:$A
你们注意红色的符号:
: 表示并列含义,例如A变量值有多个,用:符号进行分离。
. 表示你操做的当前目录。例如pap命令会查找B环境变量。
在/home键入pap命令,系统首先在/home目录下(即当前路径)查找关于 B 的内容,<a href="http://www.%3Ca%20class%3D/" channel_keylink"="" target="_blank" style="margin: 0px; padding: 0px; word-wrap: break-word; text-decoration: none; color: rgb(51, 51, 51);">linuxidc.com">www.linuxidc.com若是没有在/liheng/wang目录下查找关于B的内容。 表示该变量本次定义以前的值,例如
A表明/q/jing:aaa/cc/ld。也就是说 A=/cd/cdr:/q/jing:aaa/cc/ld
七、使用env命令显示全部的环境变量 。在命令提示符下键入env就好了。
set命令显示全部本地定义的Shell变量。
八、常见的环境变量
PATH:决定了shell将到哪些目录中寻找命令或程序
HOME:当前用户主目录
MAIL:是指当前用户的邮件存放目录。
SHELL:是指当前用户用的是哪一种Shell。
HISTSIZE:是指保存历史命令记录的条数。
LOGNAME:是指当前用户的登陆名。
HOSTNAME:是指主机的名称,许多应用程序若是要用到主机名的话,一般是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户能够修改此环境变量。
PS1:是基本提示符,对于root用户是#,对于普通用户是$。
PS2:是附属提示符,默认是“>”。能够经过修改此环境变量来修改当前的命令符,好比下列命令会将提示符修改为字符串“Hello,My NewPrompt 😃 ”。
# PS1=” Hello,My NewPrompt 😃 “
九、使用修改.bashrc文件(在用户的家目录下)进行环境变量的编辑,只对当前用户有用。使用修改 /etc/profile 文件进行环境变量的编辑,是对全部用户有用。你们必定要注意区别。
十、Linux profile文件在系统启动时将被运行。你们能够在里面加入其余命令,可是必定要加正确,否则的话系统会启动不起来的。
续
1./etc/profile , /etc/profile.d ,~/.bashrc, ~/.bash_file,这几个文件的区别是啥,可能不少新人,很疑惑。即便不少配置一些软件环境变量的人也是很疑惑
~/.bashrc, ~/.bash_file这两个看到~这个符合,应该明白,这是宿主目录下的,即里面的环境变量也叫shell变量,是局部的,只对特定的shell有效,修改过别忘了source 命令一下。
/etc/profile , /etc/profile.d,前面的是文件,后面一看也就明白.d表示目录, /etc/profile里面的变量是全局的,对全部用户的shell有效。
咱们每当在终端输入命令,系统会有响应,最重要的就是搜索路径啦,能够经过echo $PATH看到,系统因此命令的搜索路径,以:符合分开。
当咱们下载一个软件,若是咱们但愿不加入路径就能启动该程序,如在shell中任意位置输入eclipse,即启动程序,咱们就能够把eclipse程序的可执行程序的路径加入到PATH中便可。
其实咱们还能够有另外一种方法,请看以下代码
if [ -d /etc/profile.d ]; then # 判断/etc/profile.d 是否是一个目录
for i in /etc/profile.d/*.sh; do #若是是一个目录,到该目录下,取出每个shell程序
if [ -r $i ]; then #若是该shell能够执行
. $i # 则执行它 fi
done
unset i
fi
改代码是/etc/profile中的部份内容,说明/etc/profile会首先执行/etc/profile.d/目录下的全部*.sh文件。这也就给咱们一个可扩展的思路。若是咱们须要配置JDK,那么就在/etc/profile.d/下建立jvm.sh文件若是须要配置ant,那么就在/etc/profile.d/下建立ant.sh文件 这样得到的效果一致,不信你本身试试。 而后,在对应的配置文件里面添加你本身的配置就能够了。