文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux shell类型

Linux shell类型

时间:2008-04-25  来源:legone2008

    Linux中的shell有多种类型,其中最常用的几种是Bourne   shell(sh)、C   shell(csh)和Korn   shell(ksh)。三种shell各有优缺点。Bourne   shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourne   shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux操作系统缺省的shell是Bourne   Again   shell,它是Bourne   shell的扩展,简称Bash,与Bourne   shell完全向后兼容,并且在Bourne   shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C   shell和Korn   shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。   在RedHat Enterprise Linux中
fflg@/home/fflg> ls -l /bin/sh
lrwxr-xr-x    1 root     root            4  2月 18 15:38 /bin/sh -> bash
fflg@/home/fflg> ls -l /bin/bash
-rwxr-xr-x    1 root     root       598580 2003-09-18  /bin/bash
可以看出,sh 是bash的一个连接.   (1) . file.sh和sh file.sh的区别
    . 意思是使用当前shell
    sh 是重新打开一个shell(仍然是bash)
    所以我们习惯使用. .bash_profile将环境变量加载到当前shell中,
  例1: $vi ex.sh     1 FFLG="fflg";export FFLG 保存:"ex.sh" [新] 1L, 24C 已写入 依次执行如下命令,查看结果: fflg@/home/fflg/test/sh> sh ex.sh
fflg@/home/fflg/test/sh> echo $FFLG
  fflg@/home/fflg/test/sh> . ex.sh
fflg@/home/fflg/test/sh> echo $FFLG
fflg
  例2:
$vi export_1.sh
    1 val="ffengligang"
    2 export val
$vi export_2.sh
    1 . ./exp_1.sh
    2
    3 echo "My name is [$val]"
执行命令时,有以下变化:
[1]执行命令:sh export_2.sh    结果:My name is [ffengligang]   ###新启动了一个shell
  执行:echo $val   结果为空.因为val变量并没有加到当前shell环境变量中
[2]现在修改一下export_2.sh
    1 sh ./exp_1.sh     #在程序中又打开一个shell
    2
    3 echo "My name is [$val]"
   再执行命令:sh export_2.sh   结果:My name is []  ##结果为空了.因为我们的程序和命令一共加载了两个shell,而val变量存在于程序中打开的那个shell中,而并没有在命令行打开的shell中,同样,当前shell更不会有val变量的值.所以,echo $val也为空
[3]换回第一个程序时的脚本export_2.sh
    1 . ./exp_1.sh     #在程序中又打开一个shell
    2
    3 echo "My name is [$val]"
    如下执行命令: . export_2.sh   #用当前shell执行,程序中也用的".",也为当前shell
    结果:My name is [ffengligang]
    执行:echo $val   结果:ffengligang
   因为程序和命令都使用的是当前shell,而且val值也加到了环境变量中.
 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载