您的位置:首页 > Web前端

The difference between /sbin/sh and /bin/sh

2010-06-11 11:34 429 查看
Both /sbin/sh and /usr/bin/sh shells are Bourne shells.

The difference is that /sbin/sh is statically linked and /usr/bin/sh is

dynamically linked. There is also /bin/sh, however /bin is just a symbolic

link to /usr/bin.

# ls -l /sbin/sh

-r-xr-xr-x 2 bin root 251712 Jul 16 1997 /sbin/sh

# file /sbin/sh

/sbin/sh: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

# ldd /sbin/sh

ldd: /sbin/sh: file is not a dynamic executable or shared object

# ls -l /usr/bin/sh

-r-xr-xr-x 3 bin root 88620 Jul 16 1997 /usr/bin/sh

# file /usr/bin/sh

/usr/bin/sh: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped

# ldd /usr/bin/sh

libc.so.1 =>; /usr/lib/libc.so.1

libdl.so.1 =>; /usr/lib/libdl.so.1

Dynamically linked binaries use shared libraries during their execution. This

makes them smaller in size and when libraries get updated, the binaries will

automatically use the updated libraries.

Statically linked binaries contain all the code within them. They do not

use shared libraries at all. This makes them larger in size. The useful thing

about statically linked binaries is that they can run all by themselves as

they do not depend on shared libraries. If the system is "broken" and libraries

were removed, damaged, or /usr is not mounted, /sbin/sh can still be executed.

This is why it is recommended to use /sbin/sh as the default root shell
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: