Linux /etc/profile文件详解

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有效。

  1. 咱们每当在终端输入命令,系统会有响应,最重要的就是搜索路径啦,能够经过echo $PATH看到,系统因此命令的搜索路径,以:符合分开。

    当咱们下载一个软件,若是咱们但愿不加入路径就能启动该程序,如在shell中任意位置输入eclipse,即启动程序,咱们就能够把eclipse程序的可执行程序的路径加入到PATH中便可。

    其实咱们还能够有另外一种方法,请看以下代码

The default umask is now handled by pam_umask.

See pam_umask(8) and /etc/login.defs.

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文件 这样得到的效果一致,不信你本身试试。 而后,在对应的配置文件里面添加你本身的配置就能够了。

相关文章
相关标签/搜索