ホストされた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/sh
bash ではないというシステムのデフォルトを変更することもできます。
/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-reconfigure
userAがzshを望み、userBがbashを望み、両方がデフォルトのシェルとして/ bin / shを必要とする場合、using は悪い選択です。
zsh
、userBがbash
それを持っている場合。userCがに設定されている場合sh
、彼はを持っていますbash
。これは、とにかく新しいユーザーの現在のUbuntuのデフォルトです
dpkg-reconfigure zsh
設定するようなものを提案しました。私は主に、/ bin / shを適切なログインシェルにするためにフープを通過するよりも、使用したいシェルにログインシェルを設定することが望ましいと言っています。zsh
dpkg-reconfigure dash
dash
dpkg-reconfigure dash
が不具sh
になるのbash
ではなく、それを指摘できるとだけ言ったdash
。他のシェルはすべてそのまま残ります。