Ubuntu配置文件/etc/profile说明

来源:互联网 发布:js注释 summary 编辑:程序博客网 时间:2024/06/08 10:57
对于/etc/profile这个文件,是系统启动是要自动执行的文件,任何一个用户登录系统都会执行这个文件。
这个文件里面的配置,是全局配置。所以,如果你需要让你的变量让所有的用户都能使用的话,那么可以考虑在此配置文件里面添加。
比如JAVA_HOME变量的配置。
但是,尽量的,我们不要去修改这个配置文件,因为这个是系统的配置文件。我们尽量的修改我们自己独立配置文件。
在可能的时候,或者重新配置的时候,你可以随时修改你自己的配置文件而不致于影响他人或者此服务器系统。


同样的道理,修改/etc/rd.local也可以达到同样的效果。
但是和上面的一样,不是一个好的选择。


替代方案是什么呢?
先来看/etc/profile的源代码


if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi


if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='"u@"h:"w"$ '
    if [ -f /etc/bash.bashrc ]; then
    . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi


红色的代码部分,说明/etc/profile会首先执行/etc/profile.d/目录下的所有*.sh文件。
这也就给我们一个可扩展的思路。


如果我们需要配置JDK,那么就在/etc/profile.d/下创建jdk.sh文件
如果需要配置oracle,那么就在//etc/profile.d/下创建oracle.sh文件


然后,在对应的配置文件里面添加你自己的配置就可以了。


另外有结论

1./etc/environment中的echo没有显示,但是定义的变量可以在父/子bash shell中使用,调用export发现,该变量被自动的export。
2.密码登录父bash shell时,显示结果如下:
    bash.bashrc
    profile
    .bashrc
    .profile
    定义的变量可以使用,但没有被自动export。
3.bash命令免登录进入子bash shell时,显示结果如下:
    bash.bashrc
    .bashrc
    定义的变量可以使用,但没有被自动export。
4.exit命令退出子bash shell时,无显示
5.exit命令退出父bash shell时,显示:
    .bash_logout

实验结果分析:    
1. /etc/environment 设置整个系统的环境【主要PATH,初始语言LANG】,由kernel加载(第一个bash shell执行前),里面定义的变量将作用于所有的子bash shell(自动export),此时bash shell尚未就位,最好不要修改。
2. /etc/bash.bashrc 相当于很多linux下的/etc/bashrc,用来设置bash的变量【sudo,xterm等】,所有bash shell创建的时候加载,里面定义的变量将作用于本bash session。一般情况下不需要修改。
3. /etc/profile 设置全部用户的配置信息【PS1等】,在任何用户密码登录后,该文件执行,非密码登录时,不再调用。该文件会自动调用/etc/bash.bashrc。此文件会自动调用/etc/profile.d/目录下的所有shell脚本,如果有全部用户都需要的变量,比如JAVA_HOME,可以考虑创建一个脚本放到该目录下。另外,如果变量需要在子shell中使用,需要自行添加export。

4. ~/.bashrc 用来设置用户自定义的bash变量【自定义PS1,alias等】,在bash shell创建的时候加载,里面定义的变量将作用于本bash session。用户可以通过修改此文件定制自己的bash。另外,也可以将alias写到~/.bash_aliases文件中,~/.bashrc会自动加载该文件。

5. ~/.profile 用来设置用户自定义的配置信息,该文件会自动加载~/.bashrc,并且重置用户语言等变量。用户可以通过修改此文件,修改变量或者export新变量。

6. ~/.bash_logout 用来在bash shell退出之前加载,清理环境。用户可以修改此文件来在登录后重置bash状态。
7. 登录和免登录bash方式都会调用/etc/bash.bashrc和~/.bashrc。只有登录方式bash才会调用/etc/profile和~/.profile(包括su)。调用顺序为全局配置操作完之后执行个人配置。
8. ~/.bash_history 用来记录用户上一次登录的命令记录(默认1000条)。黑客的最爱。想读本次命令记录用history。



0 0
原创粉丝点击