/bin/shは常にシンボリックリンクですか?

/bin/shは常にシンボリックリンクですか?

Ubuntu/bin/shでは/bin/dash

/bin/shシェルへのシンボリックリンクではなく、実際のシェルを持つUnixまたはUnixに似たオペレーティングシステムはありますか?

答え1

Ubuntuではそうではありませんいつもシンボリックリンクはを指しましたdash。 Ubuntu 6.10がリリースされたときにこれが発生しました。この変更の理由を説明する詳細なドキュメントがあります。ここ

この記事では:

基本シェルを切り替える主な理由は効率性です。 bashはインタラクティブな使用に適した優れた機能を備えたシェルであり、実際にはまだデフォルトのログインシェルです。しかし、ダッシュよりも開始して実行する速度が大きく、遅いです。 Ubuntuブートプロセスの一部として、複数のシェルインスタンスが起動します。 /bin/dashで明示的に実行されるように各エントリを個別に変更するよりも、Ubuntuコア開発チームは単に変更を行う方が良いと思いました。この場合、継続的なメンテナンスが大量に必要で注意深い注意を払わないと、問題が発生する可能性があります。低下。基本シェル。 Ubuntu 6.10の起動速度の向上は、Initシステムの将来の開発のための優れたプラットフォームであるUpstartに起因することが多いですが、Ubuntu 6.10ではマイナーな動作変更だけで主にSystem V互換モードで実行されます。実際、これらの改善は主に /bin/sh の変更によるものです。

答え2

shシンボリックリンクは4.2 BSD(1977)以前でのみ導入されたため、シンボリックリンクを持つことは必ずしも可能ではありません。Unix バージョン 6持つ

$ tar tvzf v6root.tar.gz  | grep 5888
-rwxrwxr-x  0 3      3        5888 May 13  1975 ./bin/sh
$ 

今日、シンボリックリンクなしでBSDを見ることができます/bin/sh。いくつかの例:

  • OpenBSDでは、これはKornシェル(OpenBSDバリアント)へのハードリンクですpdksh

    $ ls -il /bin/{,k,rk}sh
    26004 -r-xr-xr-x 3 ルート bin 469976 2016 年 2 月 26 日/bin/ksh
    26004 -r-xr-xr-x 3 ルート bin 469976 2016 年 2 月 26 日/bin/rksh
    26004 -r-xr-xr-x 3ルートbin 469976 2016年2月26日/bin/sh
    $
  • FreeBSDでは、Almquistシェルの子孫です。

    %ls -il /bin/sh
    561595 -r-xr-xr-x 1 ルートチャクラ 143432 2017 年 1 月 7 日/bin/sh
    %

関連情報