每個基於 Linux 的發行版中都有哪些標準命令可用?
我想知道哪些是每個 Linux 系統中可用的標準命令。
例如,如果你得到一個 debian/ubuntu/redhat/suse/arch/slackware 等,你總是會找到類似的命令:
cd, mkdir, ls, echo, grep, sed, awk, ping etc.
我知道上面提到的一些命令是 shell 內置的,但其他命令不是,但它們仍然始終存在(基於我迄今為止的知識和經驗)。
另一方面,像 gawk、parted、traceroute 和其他非常著名的命令等命令在不同的 Linux 發行版中預設不安裝。
我進行了不同的網路搜尋,但我還沒有找到一個直接的答案。
目的是我想創建一個 shell 腳本,如果腳本中使用的命令在系統中可用,它應該進行一些完整性檢查。如果沒有,它應該提示使用者安裝所需的二進製文件。
不幸的是,不能保證任何東西都可用。
然而,大多數係統都會有GNU coreutils。僅此一項就提供了大約 105 個命令。您可能可以依賴這些,除非它是一個嵌入式系統,它可能會使用BusyBox。
您可能還可以依賴bash、cron、GNU findutils、GNU grep、gzip、iproute2、iputils、man-db、module-init-tools、net-tools、 passwd (passwd或shadow)、procps、tar和util- linux .
請注意,某些程序可能在發行版之間存在一些差異。例如
/usr/bin/awk
可能是gawk或mawk。 在 POSIX 模式下/bin/sh
可能是dash或bash 。在某些較舊的系統上,與BIND 版本的語法不同,因此使用dig可能會更好。/usr/bin/host
如果您正在尋找一些標準,Linux 標準庫定義了一些常見的程序,但並非所有發行版都聲稱符合該標準,有些發行版只有在您安裝可選的 LSB 兼容包時才會這樣做。舉個例子,我見過的一些系統
lsb_release
沒有預設安裝。除此之外,由 POSIX 標準化的命令列表可能會有所幫助。
解決問題的另一種方法是使用每個發行版的打包工具(例如 Red Hat 的 RPM、Debian 的 DEB 等)打包腳本,並聲明對您需要的任何其他程序或包的依賴。這有點工作,但這意味著使用者會看到更友好的錯誤消息,不僅告訴他們缺少什麼,還告訴他們需要安裝哪些包。
更多資訊: