ホストされているDebianサーバーがあります。 ssh経由でログインすると、sh環境が表示されます。 bash環境で開始するように変更するにはどうすればよいですか?
通常のユーザーとして、chsh
コマンドを使用してデフォルトのログインシェルを変更できます。次に例を示します。
chsh -s /bin/bash
別のオプションは、rootとしてusermodを使用することです:
usermod -s /bin/bash username
最後のエントリがデフォルトのシェルである/etc/passwd
を編集します。 /bin/bash
にしてください。
または、システムのデフォルトである/bin/sh
がbashではないように変更することもできます。
ユーザープロファイルを編集する必要があります。/etc/passwd
ファイル、またはusermod
コマンドを使用して実行できます。探している構文は次のようになります。
usermod -s /bin/bash joeuser
何らかの理由で共有アカウントを使用しようとしていて、デフォルトのシェルを変更できない場合は、次を実行できます
ssh -t <user@hostname> bash -l
他のシェルから環境を維持する必要がある場合は、最初にそのシェルを実行できます。例えば
ssh -t <user@hostname> ksh -c bash -l
chsh
もusermod
も私のために働いていませんでしたが、PuTTYを使用してこれを実行できることがわかりました。
Connection > SSH
に移動し、Remote command
をbash
に設定します。
デフォルトのシェルにexit
できないことに注意してください。接続を閉じるだけです。
最近のUbuntuリリースのデフォルトシステムシェル/bin/sh
は、/bin/dash
に設定されています。次のコマンドを実行するだけで:
Sudo dpkg-reconfigure dash
古いデフォルトの/bin/bash
に戻すことができます。
これにより、ユーザー設定を変更せずに(bash
またはchsh
を使用せずに)usermod
をインタラクティブシェルとして使用するという望ましい効果を得ることができます。シェルを/bin/sh
に設定します。
これには小さな欠点が1つだけあります。dash
はロードに必要なメモリが少なく、実行がわずかに速いため、Ubuntuの起動時間が少し長くなる可能性があります(不思議ではありません-機能が非常に制限されています)。しかし、特にホスティング環境では、この影響を測定するのはかなり難しいと思います。
また、bash
でサポートされていない一部のdash
の高度な機能を使用しているため、適切に機能しないシェルスクリプトを表示するのは面倒な場合があります。このレシピを使用すると、これが起こらないことを確認できます。
詳細については、Ubuntu wikiの この問題 を参照してください。