web-dev-qa-db-ja.com

サーバーにsshを実行するときに、bashから開始するにはどうすればよいですか?

ホストされているDebianサーバーがあります。 ssh経由でログインすると、sh環境が表示されます。 bash環境で開始するように変更するにはどうすればよいですか?

30
bbbgscott

通常のユーザーとして、chshコマンドを使用してデフォルトのログインシェルを変更できます。次に例を示します。

chsh -s /bin/bash

別のオプションは、rootとしてusermodを使用することです:

usermod -s /bin/bash username
35
jordanm

最後のエントリがデフォルトのシェルである/etc/passwdを編集します。 /bin/bashにしてください。

または、システムのデフォルトである/bin/shがbashではないように変更することもできます。

5

ユーザープロファイルを編集する必要があります。/etc/passwdファイル、またはusermodコマンドを使用して実行できます。探している構文は次のようになります。

usermod -s /bin/bash joeuser
2
tylerl

何らかの理由で共有アカウントを使用しようとしていて、デフォルトのシェルを変更できない場合は、次を実行できます

ssh -t <user@hostname> bash -l

他のシェルから環境を維持する必要がある場合は、最初にそのシェルを実行できます。例えば

ssh -t <user@hostname> ksh -c bash -l
1
UKMonkey

chshusermodも私のために働いていませんでしたが、PuTTYを使用してこれを実行できることがわかりました。

Connection > SSHに移動し、Remote commandbashに設定します。

デフォルトのシェルにexitできないことに注意してください。接続を閉じるだけです。

1
Chris

最近のUbuntuリリースのデフォルトシステムシェル/bin/shは、/bin/dashに設定されています。次のコマンドを実行するだけで:

Sudo dpkg-reconfigure dash

古いデフォルトの/bin/bashに戻すことができます。

これにより、ユーザー設定を変更せずに(bashまたはchshを使用せずに)usermodをインタラクティブシェルとして使用するという望ましい効果を得ることができます。シェルを/bin/shに設定します。

これには小さな欠点が1つだけあります。dashはロードに必要なメモリが少なく、実行がわずかに速いため、Ubuntuの起動時間が少し長くなる可能性があります(不思議ではありません-機能が非常に制限されています)。しかし、特にホスティング環境では、この影響を測定するのはかなり難しいと思います。

また、bashでサポートされていない一部のdashの高度な機能を使用しているため、適切に機能しないシェルスクリプトを表示するのは面倒な場合があります。このレシピを使用すると、これが起こらないことを確認できます。

詳細については、Ubuntu wikiの この問題 を参照してください。

1
mvp