ルートのシェルをデフォルト以外のものに設定するのは悪い習慣ですか?

ルートのシェルをデフォルト以外のものに設定するのは悪い習慣ですか?

一度は、私の友人(経験豊富なUnix / Linuxユーザー)がrootシェルをsh以外のもの(bashやzshなど)に設定すると、一部のスクリプトでシェルがshであると仮定し、奇妙なことをするために問題が発生する可能性がありますあると言いました。 。

ところで、Ubuntuのデフォルトのルートシェルはbashに設定されていて、Gentooもbashを使っているようです。誰でもこの神話を破ることができますか?

答え1

はい。起動中にシステムに障害が発生した場合は、ルートシェルにログインできます。別の/usrがあると、一部のシェルが正常に起動しないことがあります。

toorroot権限を維持するためにデフォルトシェルを使用している間は、非標準シェルを使用してアカウント(uid 0、gid 0)を作成することをお勧めします。

答え2

問題ではありません。

シェルスクリプトファイルは、実行されるシェルを明示的にエンコードします。最初の行にエンコードされているか、別のプログラムまたはスクリプトが特定のシェルを実行し、シェルスクリプトを引数として使用します。

ユーザーアカウントシェル情報(ログインプロセスを除く)を使用する唯一のプログラムはprocmailです。ユーザーがメールサーバーにシェル/bin/falseを設定した場合は、本当に面白いでしょう。しかし、通常はrootとしてprocmailを実行しません。

もう一つの候補はルートのcrontabの行です。 crond戦略とは何か、どのシェルを使うべきかわかりません。

答え3

Bourne Shell用に作成されたスクリプトは、BASH、ZSH、または$ fooでほとんど問題なく実行されます。

多くのLinuxシステムにはraw shはインストールされていませんが、通常/ bin / bashへのシンボリックリンクがインストールされています。

一部のスクリプトでは、シェルが明示的にshと「仮定」している場合は、再作成する必要があります。スクリプトに必要なインタプリタを選択する shebang メカニズムがあります。 shの場合、#!/bin/sh最初の行にスクリプトを含める必要があります。

デフォルトのシェル設定はこのコンテキストに関連してはいけません。

答え4

ユーザーのログインシェルは起動プロセスには影響しません。このシェルを好きなように設定できます。すべてのシステムにbashがあるわけではなく、正常に動作します。また/usr/bin/zsh、正しくインストールされていない場合は、すべてのシステムシェルが必要です。ただし、多くのスクリプトがbashを使用しているため、デフォルト以外のものを指すように/bin変更しないでください。指していないbashismsや他の行動。参加または働きます。/bin/sh#!/bin/sh#!/bin/bashzshdash

関連情報