#! /bin/bash
#===============================================================
#
# 个人的$HOME/.bashrc文件, 基于bash-2.05a(或更高版本)
#
# 最后更新日期: 星期2 4月15 20:32:34 CEST 2003
#
# 这个文件(一般情况下)被只会被交互式shell读取.
# 这里可以定义你的别名, 函数,
# 和其他的一些交互式特征, 比如你的提示符.
#
# 这个文件(开始时)是为Solaris设计的,
# 但是基于Redhat的默认.bashrc文件
# --> 为Linux修改.
# 在这里看到的大部分代码都是从网上找来的
#
# 这仅仅是个例子而已. 可按照自己的需求进行裁减.
#
#
#===============================================================
# --> 注释由HOWTO的作者添加.
# --> 然后又被ER编辑了一下 :-)
#--------------------------------------
# 如果有源代码的全局定义, 请在此处定义.
#--------------------------------------
if [ -f /etc/bashrc ]; then
. /etc/bashrc # --> 读取/etc/bashrc, 如果存在的话.
fi
#-------------------------------------------------------------
# $DISPLAY的自动设置 (如果还没设置的话)
# 这用于linux - 可能运行的结果不同....
# 问题是不同的终端种类对于'who am i'来说,
# 将会给出不同的答案......
# 我还没发现一种'通用'方法
#-------------------------------------------------------------
function get_xserver ()
{
case $TERM in
xterm )
XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' )
# Ane-Pieter Wieringa建议使用下面这种方式:
# I_AM=$(who am i)
# SERVER=${I_AM#*(}
# SERVER=${SERVER%*)}
XSERVER=${XSERVER%%:*}
;;
aterm | rxvt)
# 找出一些运行在这里的代码.....
;;
esac
}
if [ -z ${DISPLAY:=""} ]; then
get_xserver
if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || ${XSERVER} == "unix" ]]; then
DISPLAY=":0.0" # 在本地主机上显示
else
DISPLAY=${XSERVER}:0.0 # 在远端主机上显示
fi
fi
export DISPLAY
#----------
# 一些设置
#----------
ulimit -S -c 0 # 不需要任何coredump
set -o notify
set -o nounset
#set -o xtrace # 对于调试来说非常有用
# 使能选项:
shopt -s cdspell
shopt -s cdable_vars
shopt -s checkhash
shopt -s checkwinsize
shopt -s mailwarn
shopt -s sourcepath
shopt -s no_empty_cmd_completion # 仅限于bash>=2.04
shopt -s cmdhist
shopt -s histappend histreedit histverify
shopt -s extglob # 对于complete命令(按情况补全)来说是必要的
# 禁用选项:
shopt -u mailwarn
unset MAILCHECK # 当有邮件到达时, 我不希望我的shell提示我
export TIMEFORMAT=$'\nreal %3R\tuser %3U\tsys %3S\tpcpu %P\n'
export HISTIGNORE="&:bg:fg:ll:h"
export HOSTFILE=$HOME/.hosts # 将远端主机的列表放入~/.hosts
#-----------------------
# 问候, 问侯报文等等...
#-----------------------
# 先定义一些颜色:
red='\e[0;31m'
RED='\e[1;31m'
blue='\e[0;34m'
BLUE='\e[1;34m'
cyan='\e[0;36m'
CYAN='\e[1;36m'
NC='\e[0m' # 没有颜色
# --> 很好. 与使用"ansi.sys"的DOS效果相同.
# 在黑色背景下看起来非常好.....
echo -e "${CYAN}This is BASH ${RED}${BASH_VERSION%.*}${CYAN} - DISPLAY on ${RED}$DISPLAY${NC}\n"
date
if [ -x /usr/games/fortune ]; then
/usr/games/fortune -s # 让我们的每天充满乐趣.... :-)
fi
function _exit() # 在退出shell时运行的函数
{
echo -e "${RED}Hasta la vista, baby${NC}"
}
trap _exit EXIT
#---------------
# Shell提示符
#---------------
if [[ "${DISPLAY#$HOST}" != ":0.0" && "${DISPLAY}" != ":0" ]]; then
HILIT=${red} # 远端主机: 提示符为红
else
HILIT=${cyan} # 本地主机: 提示符为青色
fi
# --> 下面提示符函数中\W和\w的替换实例,
#+ --> 用来获得完整路径名的显示.
function fastprompt()
{
unset PROMPT_COMMAND
case $TERM in
*term | rxvt )
PS1="${HILIT}[\h]$NC \W > \[\033]0;\${TERM} [\u@\h] \w\007\]" ;;
linux )
PS1="${HILIT}[\h]$NC \W > " ;;
*)
PS1="[\h] \W > " ;;
esac
}
function powerprompt()
{
_powerprompt()
{
LOAD=$(uptime|sed -e "s/.*: \([^,]*\).*/\1/" -e "s/ //g")
}
PROMPT_COMMAND=_powerprompt
case $TERM in
*term | rxvt )
PS1="${HILIT}[\A \$LOAD]$NC\n[\h \#] \W > \
#===============================================================
#
# 个人的$HOME/.bashrc文件, 基于bash-2.05a(或更高版本)
#
# 最后更新日期: 星期2 4月15 20:32:34 CEST 2003
#
# 这个文件(一般情况下)被只会被交互式shell读取.
# 这里可以定义你的别名, 函数,
# 和其他的一些交互式特征, 比如你的提示符.
#
# 这个文件(开始时)是为Solaris设计的,
# 但是基于Redhat的默认.bashrc文件
# --> 为Linux修改.
# 在这里看到的大部分代码都是从网上找来的
#
# 这仅仅是个例子而已. 可按照自己的需求进行裁减.
#
#
#===============================================================
# --> 注释由HOWTO的作者添加.
# --> 然后又被ER编辑了一下 :-)
#--------------------------------------
# 如果有源代码的全局定义, 请在此处定义.
#--------------------------------------
if [ -f /etc/bashrc ]; then
. /etc/bashrc # --> 读取/etc/bashrc, 如果存在的话.
fi
#-------------------------------------------------------------
# $DISPLAY的自动设置 (如果还没设置的话)
# 这用于linux - 可能运行的结果不同....
# 问题是不同的终端种类对于'who am i'来说,
# 将会给出不同的答案......
# 我还没发现一种'通用'方法
#-------------------------------------------------------------
function get_xserver ()
{
case $TERM in
xterm )
XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' )
# Ane-Pieter Wieringa建议使用下面这种方式:
# I_AM=$(who am i)
# SERVER=${I_AM#*(}
# SERVER=${SERVER%*)}
XSERVER=${XSERVER%%:*}
;;
aterm | rxvt)
# 找出一些运行在这里的代码.....
;;
esac
}
if [ -z ${DISPLAY:=""} ]; then
get_xserver
if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || ${XSERVER} == "unix" ]]; then
DISPLAY=":0.0" # 在本地主机上显示
else
DISPLAY=${XSERVER}:0.0 # 在远端主机上显示
fi
fi
export DISPLAY
#----------
# 一些设置
#----------
ulimit -S -c 0 # 不需要任何coredump
set -o notify
set -o noclobber #禁止重定向时覆盖文件
#set +o noclobber #重定向时可以覆盖已有文件
set -o ignoreeofset -o nounset
#set -o xtrace # 对于调试来说非常有用
# 使能选项:
shopt -s cdspell
shopt -s cdable_vars
shopt -s checkhash
shopt -s checkwinsize
shopt -s mailwarn
shopt -s sourcepath
shopt -s no_empty_cmd_completion # 仅限于bash>=2.04
shopt -s cmdhist
shopt -s histappend histreedit histverify
shopt -s extglob # 对于complete命令(按情况补全)来说是必要的
# 禁用选项:
shopt -u mailwarn
unset MAILCHECK # 当有邮件到达时, 我不希望我的shell提示我
export TIMEFORMAT=$'\nreal %3R\tuser %3U\tsys %3S\tpcpu %P\n'
export HISTIGNORE="&:bg:fg:ll:h"
export HOSTFILE=$HOME/.hosts # 将远端主机的列表放入~/.hosts
#-----------------------
# 问候, 问侯报文等等...
#-----------------------
# 先定义一些颜色:
red='\e[0;31m'
RED='\e[1;31m'
blue='\e[0;34m'
BLUE='\e[1;34m'
cyan='\e[0;36m'
CYAN='\e[1;36m'
NC='\e[0m' # 没有颜色
# --> 很好. 与使用"ansi.sys"的DOS效果相同.
# 在黑色背景下看起来非常好.....
echo -e "${CYAN}This is BASH ${RED}${BASH_VERSION%.*}${CYAN} - DISPLAY on ${RED}$DISPLAY${NC}\n"
date
if [ -x /usr/games/fortune ]; then
/usr/games/fortune -s # 让我们的每天充满乐趣.... :-)
fi
function _exit() # 在退出shell时运行的函数
{
echo -e "${RED}Hasta la vista, baby${NC}"
}
trap _exit EXIT
#---------------
# Shell提示符
#---------------
if [[ "${DISPLAY#$HOST}" != ":0.0" && "${DISPLAY}" != ":0" ]]; then
HILIT=${red} # 远端主机: 提示符为红
else
HILIT=${cyan} # 本地主机: 提示符为青色
fi
# --> 下面提示符函数中\W和\w的替换实例,
#+ --> 用来获得完整路径名的显示.
function fastprompt()
{
unset PROMPT_COMMAND
case $TERM in
*term | rxvt )
PS1="${HILIT}[\h]$NC \W > \[\033]0;\${TERM} [\u@\h] \w\007\]" ;;
linux )
PS1="${HILIT}[\h]$NC \W > " ;;
*)
PS1="[\h] \W > " ;;
esac
}
function powerprompt()
{
_powerprompt()
{
LOAD=$(uptime|sed -e "s/.*: \([^,]*\).*/\1/" -e "s/ //g")
}
PROMPT_COMMAND=_powerprompt
case $TERM in
*term | rxvt )
PS1="${HILIT}[\A \$LOAD]$NC\n[\h \#] \W > \