• 用户环境配置文件/etc/profile


    当用户在登录界面正确地输入用户名和密码后,系统就开始为用户构建一个可以使用的用户环境。用户环境包括用户使用的环境变量、快捷键设置及命令别名等。这些设置大多是通过运行全局用户配置文件/etc/profile及用户主目录中的个人用户配置文件profile文件得到的。

    一、全局用户配置文件/etc/profile

    /etc/profile是一个全局配置文件,所有用户登录都会使用该文件构建用户环境。这个文件中设置了用户的环境变量、搜索路径等信息。

    [root@localhost ~]# cat /etc/profile
    # /etc/profile
    
    # System wide environment and startup programs, for login setup
    # Functions and aliases go in /etc/bashrc
    
    #设置环境搜索变量PATH函数
    pathmunge () {
            if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
               if [ "$2" = "after" ] ; then
                  PATH=$PATH:$1
               else
                  PATH=$1:$PATH
               fi
            fi
    }
    
    #设置变量EUID、UID的值
    # ksh workaround
    if [ -z "$EUID" -a -x /usr/bin/id ]; then 
            EUID=`id -u`
            UID=`id -ru`
    fi
    
    #如果当前登录的是root用户,则为root用户添加相应的环境变量
    # Path manipulation
    if [ "$EUID" = "0" ]; then
            pathmunge /sbin
            pathmunge /usr/sbin
            pathmunge /usr/local/sbin
    fi
    
    #设置资源限制
    # No core files by default
    ulimit -S -c 0 > /dev/null 2>&1
    #为用户设置环境变量USER、LOGNAME、MAIL
    if [ -x /usr/bin/id ]; then
            USER="`id -un`"
            LOGNAME=$USER
            MAIL="/var/spool/mail/$USER"
    fi
    
    #设置主机名、命令历史长度变量
    HOSTNAME=`/bin/hostname`
    HISTSIZE=1000
    #环境变量INPUTRC
    #该变量主要用于加载快捷键设置
    if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
        INPUTRC=/etc/inputrc
    fi
    
    #设置全局变量
    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
    
    #载入别名设置
    #运行profile.d目录中所有以.sh结尾的脚本
    for i in /etc/profile.d/*.sh ; do
        if [ -r "$i" ]; then
            . $i
        fi
    done
    
    #清除使用过的变量和函数
    unset i
    unset pathmunge
    
    
    #以下为后来自己添加到内容
    alias type='cat'
    #add MPlayer directory
    PATH=$PATH:/usr/local/MPlayer/bin
    export PATH

    二、个人用户配置文件.bash_profile

    在每个用户的家目录中,还存在一个配置文件.bash_profile。每个用户登录时,系统都会运行其家目录中的.bash_profile文件,因此这个文件多用于设置用户自己的环境变量。

    (1)查看个人用户配置文件的内容:

    [zhu@localhost ~]$ cat .bash_profile
    # .bash_profile
    
    #判断是否存在文件~/.bashrc
    #如果存在,则运行该文件
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    #为环境变量PATH添加新的搜索目录
    PATH=$PATH:$HOME/bin
    
    export PATH
    alias vi='vim'
    [zhu@localhost ~]$

    个人用户配置文件的内容相对简单,仅实现了两个功能:其一是运行个人环境变量配置文件.bashrc;其二是为环境变量PATH添加新的搜索路径。

    (2)在个人用户配置文件中,调用了另一个文件.bashrc:

    [zhu@localhost ~]$ cat .bashrc
    # .bashrc
    
    #判断是否存在文件/etc/bashrc
    #如果存在就执行这个文件
    # Source global definitions
    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi
    
    # User specific aliases and functions
    [zhu@localhost ~]$

    在个人环境变量配置文件.bashrc中调用了全局环境变量配置文件/etc/bashrc:

    [zhu@localhost ~]$ cat /etc/bashrc
    # /etc/bashrc
    
    # System wide functions and aliases
    # Environment stuff goes in /etc/profile
    
    #设置用户的umask值
    # By default, we want this to get set.
    # Even for non-interactive, non-login shells.
    if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
            umask 002
    else
            umask 022
    fi
    
    #设置环境变量PS1
    # are we an interactive shell?
    if [ "$PS1" ]; then
        case $TERM in
            xterm*)
                    if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                            PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
    ......
            unset i
            unset pathmunge
    fi
    # vim:ts=4:sw=4
    [zhu@localhost ~]$

    在全局环境变量配置文件中,设置了用户的权限掩码、环境变量PS1等。

    三、定制用户环境

    定制用户环境的几点建议:

    • 除非肯定以后可以恢复所作的修改,否则不推荐修改全局配置文件。
    • 如果确定需要修改全局配置文件,通常建议写入/etc/profile,而不是全局环境变量配置文件/etc/bashrc。因为全局环境变量配置文件是通过个人用户配置文件调用的,很可能某个用户修改了此设置。
    • 如果需要做全局性设置,推荐的做法是修改个人用户配置文件,并修改/etc/skel目录中的.bash_profile模板文件。

    此处仅提供了几点参考意见,任何人都可以按照自己的想法做,这正是Linux系统的初衷。但前提条件是,能在必要时恢复配置文件的原貌。

  • 相关阅读:
    根据指定月份,打印该月份所属的季节
    求出1~100之间,既是3又是7的倍数的自然数出现的次数
    打印所有的水仙花数
    升景坊单间短期出租
    找出1000以内的所有完数
    ssh config host
    shell获取ip
    mongodb sharding 简单部署记录
    tcp转发
    openssl和Java的keytool证书相关的命令总结
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3478393.html
Copyright © 2020-2023  润新知