• 分析一下shell(转) 规格严格


    /usr/bin/sh、/bin/sh和/sbin/sh都是Bourne shells(bsh)。

    /sbin/sh    是静态链接的
    /usr/bin/sh 是动态链接的
    /bin/sh     /bin目录是到/usr/bin的链接,所以/bin/sh和/usr/bin/sh是一样的。

    先看看属性(11.31 IA版本为例):
    # ll /sbin/sh
    -r-xr-xr-x   1 bin        bin        1469936 Oct 27  2009 /sbin/sh  
    # ls -l /usr/bin/sh  
    -r-xr-xr-x   2 bin        bin         681952 Oct 27  2009 /usr/bin/sh

    # ldd /sbin/sh
    /sbin/sh:
    ldd: “/sbin/sh” is not a shared executable.

    # ldd /usr/bin/sh  
    /usr/bin/sh:
            libc.so.1 =>    /usr/lib/hpux32/libc.so.1
            libdl.so.1 =>   /usr/lib/hpux32/libdl.so.1

    从ldd的结果我们可以看到/usr/bin/sh需要动态链接两个库,而/sbin/sh不需要动态链接库。

    动态链接的bin执行的时候使用共享的libraries.他们的文件更小,
    而且当libraries更新的时候,他们自动使用更新的libaries

    静态链接bin包含了所有的代码,不需要使用共享的libraries. 他们的文件大小比动态链接的bin文件要大.
    如果系统 “broken”并且libraries被删除了,损坏了,或者/usr目录没被mounted,/sbin/sh仍然可以执行。  

    所以推荐大家使用/sbin/sh 作为缺省的root shell

  • 相关阅读:
    spring 实现测试解耦
    Java 反射实例 (二)
    Java 反射实例
    Thread.join()
    缓存输入/输出流
    文件的拷贝
    将键盘输入的数据保存到文件中:OutputStream
    InputStream中read方法各个参数的意义
    OutputStream
    InputStream中的主要的子类
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/2059554.html
Copyright © 2020-2023  润新知