环境变量配置文件

简介: 环境变量的作用环境变量配置文件主要是定义对系统操作环境生效的系统默认环境变量,如PATH、HISTSIZE、PS1、HOSTNAME等。


一、环境变量配置文件简介



1. 环境变量的作用

环境变量配置文件主要是定义对系统操作环境生效的系统默认环境变量,如PATH、HISTSIZE、PS1、HOSTNAME等。


2. source 命令

修改配置文件后,注销重新登录之后才会生效,使用source命令可以不用重新登录,令配置文件生效。

语法

  • source 配置文件

  • . 配置文件

实例

[root~]# source .bashrc
[root~]# . .bashrc


3. 主要的环境变量配置文件

/etc/profile/etc/profile.d/*.sh~/.bash_profile~/.bashrc/etc/bashrc


4. 环境变量配置文件加载顺序


正常登录

`/etc/profile` ——> `~/.bash_profile` ——> `~/.bashrc` ——> `/etc/bashrc` ——> 命令提示符
    |
    |——> `/etc/profile.d/*.sh` ——> `/etc/profile.d/lang.sh` ——> `/etc/locale.conf`

非正常登录(使用 su 命令切换用户)

`/etc/bashrc` ——> 命令提示符
    |
    |——> `/etc/profile.d/*.sh` ——> `/etc/profile.d/lang.sh` ——> `/etc/locale.conf`


二、环境变量配置文件功能


1. /etc/profile 文件的作用

USER 变量LOGNAME 变量MAIL 变量PATH 变量HOSTNAME 变量HISTSIZE 变量umask遍历调用 /etc/profile.d/*.sh 文件

实例

  • /etc/profile 文件,省略了部分内容
# /etc/profile
# PATH 变量
pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}
if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    # USER 变量
    USER="`/usr/bin/id -un`"
    # LOGNAME 变量
    LOGNAME=$USER
    # MAIL 变量
    MAIL="/var/spool/mail/$USER"
fi
# HOSTNAME 变量
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
# HISTSIZE 变量
HISTSIZE=1000
# 声明为环境变量
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# /usr/share/doc/setup-*/uidgid file
# 定义 umask
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi
# 遍历调用 `/etc/profile.d/*.sh` 文件
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done


2. /etc/bashrc 文件的作用

PS1 变量PATH 变量umask遍历调用 /etc/profile.d/*.sh 文件

实例

  • /etc/bashrc 文件,省略了部分内容
# /etc/bashrc
# are we an interactive shell?
# PS1 变量
if [ "$PS1" ]; then
  if [ -z "$PROMPT_COMMAND" ]; then
    case $TERM in
    xterm*|vte*)
      if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
      elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
          PROMPT_COMMAND="__vte_prompt_command"
      else
          PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
      fi
      ;;
    screen*)
      if [ -e /etc/sysconfig/bash-prompt-screen ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
      else
          PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
      fi
      ;;
    *)
      [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
      ;;
    esac
  fi
  # Turn on parallel history
  shopt -s histappend
  history -a
  # Turn on checkwinsize
  shopt -s checkwinsize
  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
fi
# ----------只有非正常登录的shell才会执行下面脚本----------------
if ! shopt -q login_shell ; then # We're not a login shell
    # Need to redefine pathmunge, it get's undefined at the end of /etc/profile
    # PATH 变量
    pathmunge () {
        case ":${PATH}:" in
            *:"$1":*)
                ;;
            *)
                if [ "$2" = "after" ] ; then
                    PATH=$PATH:$1
                else
                    PATH=$1:$PATH
                fi
        esac
    }
    # /usr/share/doc/setup-*/uidgid file
    # umask
    if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
       umask 002
    else
       umask 022
    fi
    SHELL=/bin/bash
    # 遍历调用 `/etc/profile.d/*.sh` 文件
    for i in /etc/profile.d/*.sh; do
        if [ -r "$i" ]; then
            if [ "$PS1" ]; then
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done
fi


3. ~/.bash_profile 文件的作用

调用了 ~/.bashrc 文件在PATH变量后加入 :$HOME/bin 这个目录

实例

  • ~/.bash_profile 文件
# .bash_profile
# 调用了 `~/.bashrc` 文件
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# 在PATH变量后加入 `:$HOME/bin` 这个目录
PATH=$PATH:$HOME/bin
export PATH


4. ~/.bashrc 文件的作用

定义别名调用 /etc/bashrc 文件

实例

  • ~/.bashrc ,省略了部分内容
# .bashrc
# 调用 `/etc/bashrc` 文件
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
# 定义别名
alias ll='ls -AlhF --color=auto'
alias la='ls -A'
alias l='ls -CF'
alias vi='vim'


三、其他文件



1. 注销时生效的环境变量配置文件

~/.bash_logout


2. 历史命令存储文件

~/.bash_history


3. shell登录信息文件


/etc/moted

不管是本地登录,还是远程登录,都可以显示此文件内容信息。


/etc/issue.net

远程终端欢迎信息


要显示此欢迎信息,由ssh的配置文件 /etc/ssh/sshd_config 决定。需要在ssh配置文件中加入"Banner /etc/issue.net" 行,并重启ssh服务才会生效。

/etc/issue

本地终端欢迎信息


因为服务器大都采用远程登录,本地终端欢迎信息设置的意义不大。
  • 本地终端欢迎信息支持转义符
转义符 作用
\d 显示当前系统日期
\s 显示操作系统名称
\l 显示登录终端号
\m 显示硬件体系结构,如i386/i686等
\n 显示主机名
\o 显示域名
\r 显示内核版本
\t 显示当前系统时间
\u 显示当前登录用户的序号
相关文章
|
Windows
path环境变量
path环境变量
77 1
|
6天前
|
Rust Shell Python
让你的 环境变量 更合理
让你的 环境变量 更合理
21 3
让你的  环境变量 更合理
|
3月前
|
分布式计算 Linux 分布式数据库
环境变量配置文件中两种路径添加方式
本文介绍Linux环境下配置HBase与Spark的环境变量方法及区别。通过将`HBASE_HOME/bin`与`SPARK_HOME/bin`添加至`PATH`变量,实现命令行工具的全局访问。HBase将其置于`PATH`末尾,而Spark置于开头,这意味着Spark相关命令将被优先调用。这种设置便于管理软件依赖并确保正确版本的执行。
49 4
|
4月前
|
Java Linux Shell
配置系统PATH环境变量
配置系统PATH环境变量
|
6月前
|
前端开发 测试技术 API
NuxtJS3配置多环境变量
OK,配置完成~~~~~~
286 4
|
6月前
|
Shell
环境变量
环境变量。
58 1
|
11月前
|
JavaScript
umijs环境变量问题
umijs环境变量问题
203 0
|
存储 搜索推荐
环境变量详解
环境变量详解
104 1
|
API 数据安全/隐私保护
gitlab--内置的环境变量、自定义环境变量
gitlab--内置的环境变量、自定义环境变量
|
Linux iOS开发 MacOS
一日一技:你真的知道如何设置环境变量?
一日一技:你真的知道如何设置环境变量?
155 0