回答:
はい。起動中にシステムに障害が発生した場合、ルートシェルにログインできます。別個の/ usrがある場合、一部のシェルは正常に起動できません。
toor
デフォルトのシェルでルートを残したまま、非標準シェルでアカウント(uid 0、gid 0)を作成することをお勧めします。
zsh
何らかの形/usr
で破損した場合、問題が発生しますか?しかし、私のシステムは持っている/bin/sh
を指し/bin/bash
そしてbash
、なぜでしょう自体sh
影響を受ける可能性?
zsh
/usr/bin/
それが間違ってインストールされた場合は、入ってはいけません。すべてのシェルがでなければなりません/bin
/bin
ていますが、いくつかのファイルはにあり/usr/share
ます。また、問題は起動時のログイン中(一部のサービスが失敗したとき)であることを明確に述べました。
問題ではないはずです。
シェルスクリプトファイルは、実行されるシェルを明示的にエンコードします。最初の行にエンコードされるか、他のプログラムまたはスクリプトが特定のシェルを実行し、シェルスクリプトを引数として渡します。
ユーザーアカウントシェル情報を使用する(ログインプロセス以外に)考えられる唯一のプログラムは、procmailです。ユーザーがメールサーバーでshell / bin / falseとして設定している場合は本当におかしいです...しかし、通常はprocmailをルートとして実行しません。
別の候補は、ルートのcrontab内の行です。crondのポリシーがどのシェルを使用するかはわかりません。
bourneシェル用に作成されたスクリプトは、ほとんどの場合、問題なくBASH、ZSH、または$ fooに対して実行されます。
多くのLinuxシステムでは、オリジナルのshはインストールされていませんが、代わりに/ bin / bashに対するシンボリックリンクであることがよくあります。
一部のスクリプトがシェルが明示的にshであると「想定」している場合、それらを書き換える必要があります。スクリプトに必要なインタープリターを選択するためのシェバンメカニズムがあります。shの場合、スクリプトは#!/bin/sh
最初の行として含める必要があります。
このコンテキストでは、デフォルトのシェル設定は関係ありません。
ルートのシェルを変更しても問題が生じるとは思わない。ルートのデフォルトシェルとしてtcshを使用しているいくつかのユニセス(おそらくBSDのバリアント?)を覚えているようです。
とにかくルートログインはまれです。通常、自分のアカウントにログインし、suまたはsudoでrootになります。
重要なのは、システムの修復コンテキストで使用できるように、ルートのシェルに可能な限り少ない依存関係を持たせることです。たとえば、静的にリンクされたルートシェルを使用することをお勧めします。一部のディストリビューションには、bashまたはzshまたはsash(多くの標準ユーティリティが組み込まれたシェル)の静的リンクバージョンが付属しています。ただし、レスキューCDまたはUSBドライブからシステムを簡単に起動できる場合、これはそれほど重要ではありません。
ユーザーのログインシェルは、ブートプロセスに影響しません。このシェルを任意の値に設定できます。すべてのシステムにbashがあるわけではなく、正常に動作します。また、/usr/bin/zsh
誤ってインストールされた場合は、すべてのシステムシェルがにあるはず/bin
です。ただし、/bin/sh
多くのスクリプトが#!/bin/sh
通常bashを指している#!/bin/bash
ため、bashismやその他の振る舞いを使用する必要があるため、デフォルト以外のものを指すように変更しないでください。上の仕事zsh
かdash
。
bash
とzsh
している/bin
Solaris / illumosに関しては、Solaris Root Shell Mini-FAQ言及
一部のシステム管理者は、
Solarisシステムでルートシェルを変更しないことを推奨しています。理由を尋ねると、rootには / usr / libの下
の動的
ライブラリに依存しない静的にリンクされたシェルが必要であると言われるかもしれません。これは過去に真実でしたが、
必ずしも今日ではそうではありません。Solarisは、適切に構成されている場合、他のバージョンのUnixと同様であり、ルートまたはその他のアカウント用に定義したシェルをサポートできます。
したがって、はい、Solarisまたはillumosを使用している場合は、以外のシェルを使用しても構いませんsh
。
bash
。私は修正するためにシングルユーザーモードで起動しました/bin/sh
が、まだFBSD
フォークのリンクにリンクされていたために機能してbourne
いませんでしたbash
。