Chinaunix首页 | 论坛 | 博客
  • 博客访问: 77098
  • 博文数量: 19
  • 博客积分: 372
  • 博客等级: 二等列兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-20 14:01
文章分类

全部博文(19)

文章存档

2010年(19)

分类:

2010-05-08 16:05:28

1、查看当前bash版本,bash –version,或者打印环境变量BASH_VERSON

[root@localhost ~]# bash --version

GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)

Copyright (C) 2004 Free Software Foundation, Inc.

[root@localhost ~]# echo $BASH_VERSION

3.00.15(1)-release

2、系统启动后运行的第一个进程为init,进程标识符为1,其派生出一个getty进程,该进程负责打开终端端口。接下来就是执行提/bin/login程序。其功能是验证相关用户名、密码等和设计环境,然后启动一个shell给该用户。bash进程首先要查找系统文件/etc/profile,执行其中的命令,然后在用户目录中查找一个名为.bash_profile的初始化文件。执行完相关命令后,bash shell接着在用户的ENV文件,执行.bashrc中的命令。最后获得相关的提示符如$等,接受用户的输入命令。

3、如何改变当前的shell?当前我的shellbash,我在命令行中直接键入csh,然后ps查看一下,就看到我有二个shell在运行了,当前运行的shellcsh。按exit可以退出,这就是最临时改变一下你使用的shell

4、查看/etc/profile文件看它有什么功能。

[root@localhost xinbo]# cat /etc/profile

# /etc/profile

 

# System wide environment and startup programs, for login setup

# Functions and aliases go in /etc/bashrc

 

pathmunge () {

        if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then

           if [ "$2" = "after" ] ; then

              PATH=$PATH:$1

           else

              PATH=$1:$PATH

           fi

        fi

}

 

# Path manipulation

if [ `id -u` = 0 ]; then

        pathmunge /sbin

        pathmunge /usr/sbin

        pathmunge /usr/local/sbin

fi

 

pathmunge /usr/X11R6/bin after

 

 

# No core files by default

ulimit -S -c 0 > /dev/null 2>&1

 

USER="`id -un`"

LOGNAME=$USER

MAIL="/var/spool/mail/$USER"

 

HOSTNAME=`/bin/hostname`

HISTSIZE=1000

 

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then

    INPUTRC=/etc/inputrc

fi

 

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

 

for i in /etc/profile.d/*.sh ; do

    if [ -r "$i" ]; then

        . $i

    fi

done

 

unset i

unset pathmunge

从上面我们可以看出,其功能主要有给PATH变量赋值,shell将其指定的位置搜索命令;指定主提示符等一系统的功能。就这是为什么开始我们不同用户会显示不同的参数的原因。

4、再来看看目前用户的相关设置文件。~/.bash_profile,注意他是一个隐藏文件,我们要用ls –al 才能查看得到。如果在我们的主目录里面能找到它,那将被执行source命令。

[root@localhost xinbo]# cat ~/.bash_profile

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

 

# User specific environment and startup programs

 

PATH=$PATH:$HOME/bin

 

export PATH

unset USERNAME

5shell处理的是一些命令。而这些命令可以是:别名、关键字(if等)、函数、内置命令和可执行文件。其按以上类型顺序执行。通过type来查看相关命令类型。内置命令和函数是在shell中定义的,执行速度快。而像ls这样的脚本和可执行程序在存储在磁盘上的,shell为了运行它们得先搜索PATH的目录来查找它们,然后在shell中调用一个新的shell来执行脚本,因此相对而言较慢

[root@localhost xinbo]# type test

test is a shell builtin

[root@localhost xinbo]# type ls

ls is aliased to `ls --color=tty'

[root@localhost xinbo]# type pwd

pwd is a shell builtin

[root@localhost xinbo]# type clear

clear is /usr/bin/clear

6、有条件执行命令。&&和|| gcc –o test test.c && test这个意思就是如果我执行gcc –o test test.c如果成功,即其退出状态为0的时候,我们才会接下执行test命令,如果失败就不执行和C语言中的一样。对于||来说的话,与C中中一样的理解就OK了。

7shell的元字符。

&:在后台处理的进程;

;:隔命令;

$:替换变量;

?:匹配单个字符;

*:匹配0个或者多个字符;

abc]:匹配abc中的一个。

[!abc]:除abc以外的一个字符。

cmds):在子shell中执行命令。

cmds}:在当前shell中执行命令。

阅读(1642) | 评论(1) | 转发(0) |
0

上一篇:怎么安装VMware Toos

下一篇:shell基础学习

给主人留下些什么吧!~~

安何2010-05-16 19:56:25