配置BASH SHELL和系统配置文件

来源:互联网 发布:汕头 知乎 编辑:程序博客网 时间:2024/06/06 03:22

重新配置BASH SHELL可以通过以下几种方式:

1、利用局部变量来配置BASH SHELL

2、通过别名和函数来设定BASH SHELL

3、通过set命令来配置BASH SHELL

4、通过环境变量来设定BASH SHELL 中的其他命令和应用程序。

shell变量分为两种类型:

局部变量:只能在当前的shell环境中使用

环境变量:当前shell和子shell均可以使用

使用set命令可以查看所有环境变量:

通过env可以查看环境变量:


1、利用局部变量来配置BASH SHELL


在系统提示符命令下:变量名=变量的值

shiyanlou:linux/ $ DOG1_COLOR=black                                                                                                                          [19:00:35]
shiyanlou:linux/ $ echo $DOG1_COLOR                                                                                                                          [19:00:42]
black

局部变量PS1

用来显示系统提示符

PS1='%{$fg[$NCOLOR]%}%B%n%b%{$reset_color%}:%{$fg[blue]%}%B%c/%b%{$reset_color%} $(git_prompt_info)%(!.#.$) '
在PS1中可以使用换码序列符来设定系统提示符:

下面简单说说环境下默认的特殊符号所代表的意义:

\d :代表日期,格式为weekday month date,例如:"Mon Aug1"

\H:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux

\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 

\t :显示时间为24小时格式,如:HH:MM:SS 

\T :显示时间为12小时格式 

\A :显示时间为24小时格式:HH:MM 

\u :当前用户的账号名称

\v :BASH的版本信息

\w :完整的工作目录名称。家目录会以 ~代替

\W :利用basename取得工作目录名称,所以只会列出最后一个目录

\# :下达的第几个命令

\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

别名的用法及设定

l='ls -lah'
la='ls -lAh'
ll='ls -lh'
ls='ls --color=tty'
lsa='ls -lah'
md='mkdir -p'
please=sudo
po=popd
pu=pushd
rd=rmdir
which-command=whence
自定义别名

 alias mydir='ls -laF'  
此命令相当于Windows dos dir命令

取消别名

unalias 别名即可

unalias mydir


将局部变量转换为环境变量

export 变量名

set命令可以查看所有变量,包括本地变量和环境变量

env只能查看环境变量

因此在set命令中有的而env命令中没有的就一定是局部变量


常用环境变量

shiyanlou:linux/ $ env                                                                                                                                       [19:20:18]
USER=shiyanlou#用户名
LOGNAME=shiyanlou
HOME=/home/shiyanlou#用户家目录
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/hadoop-2.4.1/bin:/opt/hadoop-2.4.1/sbin:/opt/hbase-1.1.5/bin:/opt/apache-hive-2.0.0-bin/bin:/opt/sbt/bin:/opt/spark-1.6.1-bin-hadoop2.6/bin:/opt/openrefine-2.6-rc.2#可执行文件搜索路径,即搜寻存放程序的一个目录列表
MAIL=/var/mail/shiyanlou
SHELL=/usr/bin/zsh#用户登录shell的路径
SSH_CLIENT=42.196.54.118 64152 22
SSH_CONNECTION=42.196.54.118 64152 192.168.42.3 22
SSH_TTY=/dev/pts/0
TERM=xterm#用户登录终端的类型
no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.0.1,local.home
SHLVL=1
PWD=/home/shiyanlou/python/linux#当前工作的目录
OLDPWD=/home/shiyanlou
SWIFT_HOME=/opt/swift
JAVA_HOME=/usr/lib/jvm/java-8-oracle
ZSH=/home/shiyanlou/.oh-my-zsh
PAGER=less
LESS=-R
LC_CTYPE=
LSCOLORS=Gxfxcxdxbxegedabagacad
LS_COLORS=no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:*.patch=00;34:*.o=00;32:*.so=01;35:*.ko=01;31:*.la=00;33
HADOOP_HOME=/opt/hadoop-2.4.1
HBASE_HOME=/opt/hbase-1.1.5
HIVE_HOME=/opt/apache-hive-2.0.0-bin/
SBT_HOME=/opt/sbt/
OPENREFINE_HOME=/opt/openrefine-2.6-rc.2
_=/usr/bin/env

shell启动脚本和登录shell

用户定义的shell变量会在系统重新启动或用户退出时而失去,有没有什么方法可以设定并永久保存下去?

可以将变量定义和升级变量的操作放到shell启动脚本中,让其随着系统的启动而自动执行。

除了shell自启动脚本之外,与系统启动和用户登录相关的另外两个非常重要的概念就是登录shell(login shell)和非登录shell(Non-login shell)。

login shell的脚本启动顺序:

当一个用户登录Linux系统时,


如果是No-login shell的话,其执行顺序是:



/etc/profile文件和/etc/profile.d目录

shiyanlou:~/ $ sudo cat -n  /etc/profile                             [20:22:13]
     1  # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
     2  # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
     3
     4  if [ "$PS1" ]; then
     5    if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
     6      # The file bash.bashrc already sets the default PS1.
     7      # PS1='\h:\w\$ '
     8      if [ -f /etc/bash.bashrc ]; then
     9        . /etc/bash.bashrc
    10      fi
    11    else
    12      if [ "`id -u`" -eq 0 ]; then
    13        PS1='# '
    14      else
    15        PS1='$ '
    16      fi
    17    fi
    18  fi
    19
    20  # The default umask is now handled by pam_umask.
    21  # See pam_umask(8) and /etc/login.defs.
    22
    23  if [ -d /etc/profile.d ]; then
    24    for i in /etc/profile.d/*.sh; do
    25      if [ -r $i ]; then
    26        . $i
    27      fi
    28    done
    29    unset i
    30  fi


原创粉丝点击