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
The difference between /sbin/sh and /bin/sh
最新推荐文章于 2023-12-14 18:32:56 发布
/sbin/sh 和 /usr/bin/sh 均为 Bourne shell,区别在于前者静态链接,后者动态链接。/sbin/sh 包含所有代码,不依赖共享库,适合系统故障时使用;/usr/bin/sh 利用共享库,更新时自动使用新版库。建议将 /sbin/sh 设为默认 root shell。
790

被折叠的 条评论
为什么被折叠?



