配置和启动脚本(bash shell学习01)

bash是 Bourne Again Shell简称,从unix系统的sh发展而来

查看当前的shell

echo $SHELL

查看系统支持的shell
cat /etc/shells

[root@localhost110 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

[root@localhost110 bin]# ls -al *sh
-rwxr-xr-x. 1 root root 941720 2015-09-23 00:40:33 bash
lrwxrwxrwx. 1 root root      4 2016-01-14 06:42:18 csh -> tcsh
-rwxr-xr-x. 1 root root 109672 2012-10-17 15:48:39 dash
lrwxrwxrwx. 1 root root      4 2016-01-14 00:25:58 sh -> bash
-rwxr-xr-x. 1 root root 387392 2015-01-29 19:23:18 tcsh

一、 bash shell的配置

变量可分为自定义变量和环境变量
他们作用范围不同

set 可以查看所有变量        
set|more 查看 enter一行一行查看     
set|less enter换行 pagedown换页 q退出       

env只能查看环境变量  

bash shell的设置方式

1.通过自定义变量设置

key=value

比如 a=ajax       
echo $a  即可得到ajax
unset aaa 删除变量
  • 不能以数字或者特殊字符开头
  • 等号左右2边不可有空格
  • 双引号能解析
key1='kkk'
key2='kk2'
key3=key1−−−−key2
echo $key3
kkk----kk2
常见的变量
HIST
[root@localhost110 bin]# set|grep HIST
HISTCONTROL=ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000

HISTFILESIZE :记录历史指令保存的最大值
HISTSIZE:执行history时显示的个数
COLUMNS:终端窗口显示的宽度
LINES:终端窗口显示的高度

PS1
[root@localhost110 bin]# echo $PS1
[\u@\h \W]\$

设置提示符号前面的内容样式(\d,\h,\t,\u,\W,!,$,\l 等)

符号 含义
\u 当前用户
\W 当前工作目录
\w 当前完整的工作目录从/算起
\h 主机名
\t 当前时间
# 登录后下达的第几个指令
比如
PS1='[\u@\h-\w-\t-\#]'
[root@bogon-/var/var/lib-08:35:26-38]
2.通过别名(Aliases)设置

查看所有

[root@localhost110 bin]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

查看某个

[root@localhost110 bin]# type ll
ll is aliased to `ls -l --color=auto'
[root@localhost110 bin]# type cd
cd is a shell builtin

设置删除

alias cls='clear'
[root@localhost110 bin]# type cls
cls is aliased to `clear'
删除别名定义
unalias cls

3.通过set指令设置

set自身查看所有变量的值

设置shell内部的属性值(set -o noclobber,set -o vi)

ll>a.txt 可以写入
ll>a.txt 可以覆盖
[root@localhost110 bin]# set -o noclobber
[root@localhost110 bin]# ll>a.txt
-bash: a.txt: cannot overwrite existing file
[root@localhost110 bin]# ll>>a.txt
[root@localhost110 bin]# set +o noclobber
[root@localhost110 bin]# ll>a.txt 

set -o noclobber /*设置禁止重定向覆盖*/
set +o noclobber /*设置允许重定向覆盖*/
[root@bogon ~]# set -o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
[root@bogon ~]# set +o
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace
-o,+o
set -o vi
设置输入命令的模式为vi下

[root@localhost110 bin]# set -o|grep vi
privileged     	off
vi             	on
[root@localhost110 bin]# set +o vi
[root@localhost110 bin]# set -o|grep vi
privileged     	off
vi             	off
命令行不能退格和上下了

4.通过环境变量设置

自定义变量只能在当前shell环境下有效
环境变量在整个主机下的shell环境中有效

可使用 export variable name来设置

unset 变量名可以删除变量

定义过的普通变量和通过export 变量名来升级为环境变量,在子bash里生效

常用变量
HOME
PWD
PATH
LANG

二、shell startup scripts原理

login和non-login

  • 用户登录或者其它非登录动作时自动执行的一些脚本
  • 建立自定义变量或者执行set设置shell
  • 建立环境变量,设置其它程序
  • 使用alias 简化后续操作
  • 登录时执行哪些程序
login

完整登录流程(centos)

/etc/profile           (PATH/USR/HOSTNAME/HISTSIZE等))
    /etc/profile.d/*.sh    (颜色语言 指令别名)
~/.bash_profile
    ~/.bashrc
      /etc/bashrc
~/.bash_login
~/.profile

~/.bash_profile,~/.bash_login,~/.profile
(只能依次读取其中一个,任何一个读取成功,不再读取下一个)

各自home目录的只对各自生效
修改完成功后 source 重新加载脚本即可

non-login

无需登录即可运行的shell
如su和 原bash下的新bash动作
涉及到的脚本

~/.bashrc 和/etc/bashrc
/etc/profile.d/*.sh (颜色语言 指令别名)

执行bash命令

~/.bash_logout 用户注销时执行的命令,备份,清理等

source 别名 .
history 历史命令
1007 set|grep HI
1008 set|grep HISTFILE
1009 set|grep HIST
1010 cat /root/.bash_history
1011 vim /root/.bash_history
1012 set|grep HIST
1013 history
1014 set|grep HIST
1015 ll
1016 history

!! 表示上一个命令
!s 表示执行最近的s开头的命令 当前即1014号命令
!1013 执行历史编号的1013号命令
posted @ 2016-10-15 20:14  H&K  阅读(1190)  评论(0编辑  收藏  举报