为什么有两个相同的bash?

为什么有两个相同的bash?

我见过一些 bash 脚本以/user/bin/bash和其他脚本开头/bin/bash

我做了一个校验和cksum

2695035772 1392424 /usr/bin/bash
2695035772 1392424 /bin/bash

它们看起来完全一样,那么有什么区别呢?在 bash 脚本中使用其中一个比另一个更合适吗?

答案1

/bin链接到/usr/bin,因此两者实际上是相同的。 也一样sbin。 这是由于历史、兼容性原因。bash早于 Linux,因此为了更兼容,我们仍然同时使用两者。

$ ls -l  / | grep bin 
lrwxrwxrwx   1 root     root              7 apr  3 00:13 bin -> usr/bin
lrwxrwxrwx   1 root     root              8 apr  3 00:13 sbin -> usr/sbin

我们正朝着 迈进/usr/bin/bash。Fedora 在这方面领先于 Debian/Ubuntu 和 OpenSUSE(它们使用/bin/bash)。

答案2

作为ubfan1 在评论中说道/bin目录现在是(不确定什么时候发生了这种情况,但这并不重要)只是一个到的链接/usr/bin,所以/bin/bash/usr/bin/bash指向系统中完全相同的位置,因此校验和相同。

答案3

只有一个“bash”可执行文件。目录/bin现在被替换为指向 的符号链接/usr/bin。因此,/bin/bash/usr/bin/bash都是同一个可执行文件。

从历史上看,bash核心实用程序曾经位于 中/bin。硬盘很小,因此需要将系统分区保持在较小大小。核心二进制文件收集在 中/bin,这些二进制文件位于系统启动的硬盘上。/usr/bin然后设计了一个目录来托管其他二进制文件,这些二进制文件最终位于另一个驱动器的分区上,并在启动过程的稍后阶段安装。

如今存储空间充足,因此人们倾向于取消/bin和之间的历史分割/usr/bin。许多发行版开始将任何可执行文件移至/usr/bin,但出于兼容性原因,仍然保留/bin,这实际上只是 的符号链接/usr/bin。这样,传统的 shebang#!/bin/bash将继续发挥作用,尽管/bin将来可能完全消失。

相关内容