linux 环境变量存放文件,Linux Shell编程(4) - 环境变量配置文件

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

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

显示当前登录用户的序号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值