ホストされたDebianサーバーがあります。ssh経由でログインすると、sh環境が表示されます。bash環境で起動するように変更するにはどうすればよいですか?
ホストされたDebianサーバーがあります。ssh経由でログインすると、sh環境が表示されます。bash環境で起動するように変更するにはどうすればよいですか?
回答:
通常のユーザーとして、chshコマンドを使用してデフォルトのログインシェルを変更できます。以下に例を示します。
chsh -s /bin/bash
別のオプションは、usermodをルートとして使用することです。
usermod -s /bin/bash username
adduser、デフォルトでbashに設定する必要があります。デフォルトはで設定されてい/etc/adduser.confます。それ以外の場合は、で明示的にシェルを指定しuseraddます。
/etc/passwd最後のエントリがデフォルトのシェルである場所を編集します。それを作ります/bin/bash。
または、/bin/shbash ではないというシステムのデフォルトを変更することもできます。
/bin/shなり/bin/dashます。そして、他の2つの答えの価値は同じであり、異なる手段で同じ目的を達成します。なんでも。
/etc/passwdは非常に推奨されません。編集ミスがあると、すべてのユーザーのログインが切断され、修復するためにリカバリメディアまたはシングルユーザーモードで起動する必要があります。usermod変更するなどのツールがあります/etc/passwd。
/etc/passwd。
/bin/bashとして起動/bin/shすると--posix、で実行するのと同じで、望ましくない結果になる可能性があります。
/bin/bashすべてのマシンでこれらの年月をシェルとして使用してきました。もっと具体的な議論が必要です。
/bin/sh最近のUbuntuリリースのデフォルトのシステムシェルはに設定されています/bin/dash。次のコマンドを実行するだけです:
sudo dpkg-reconfigure dash
古いデフォルトのに戻すことができます/bin/bash。
これにより、bashユーザー設定(no chshまたはusermod)を変更せずに対話型シェルとしての効果を得ることができ、現在シェルがに設定されているすべてのユーザーに対して機能し/bin/shます。
これには小さな欠点が1つだけあります。Ubuntuの起動時間がわずかに長くなる可能性dashがあります。これは、ロードするメモリが少なく、実行がわずかに速いためです(当然、機能が限られています)。しかし、特にホスティング環境では、この効果を測定するのはかなり難しいと思います。
また、でbashサポートされていないいくつかの高度な機能を使用しているため、適切に動作しないシェルスクリプトが表示されるのは面倒ですdash。このレシピを使用すると、これが起こらないようになります。
詳細については、この問題に関するUbuntu wikiを参照してください。
/bin/sh。POSIX互換のシェルスクリプトのインタープリターとして使用されます。必ずしも最良のインタラクティブシェルではありません。bashシステムシェルになりたい場合はchsh、適切なadduser呼び出しを使用して優先ログインシェルを設定する必要があります。dpkg-reconfigureuserAがzshを望み、userBがbashを望み、両方がデフォルトのシェルとして/ bin / shを必要とする場合、using は悪い選択です。
zsh、userBがbashそれを持っている場合。userCがに設定されている場合sh、彼はを持っていますbash。これは、とにかく新しいユーザーの現在のUbuntuのデフォルトです
dpkg-reconfigure zsh設定するようなものを提案しました。私は主に、/ bin / shを適切なログインシェルにするためにフープを通過するよりも、使用したいシェルにログインシェルを設定することが望ましいと言っています。zshdpkg-reconfigure dashdash
dpkg-reconfigure dashが不具shになるのbashではなく、それを指摘できるとだけ言ったdash。他のシェルはすべてそのまま残ります。