UbuntuでBashをデフォルトのシェルにするにはどうすればよいですか?


101

私が持っている.bash_profile自分のホームディレクトリに、それはログイン時に実行取得されていません。私が次のことをすれば、物事は私が期待するように思えます:

ssh myhost
bash
source ~/.bash_profile

ただし、通常はすべてログイン時に発生します。考え?


3
また、あなたが持っていないことを確認してください~/.profileかを~/.bash_loginソースとするだけの3つのように、。(正確な順序を忘れていました。)
grawity

3
タイトルと投稿の本文で異なる質問があるのはなぜですか?
パブーク

回答:


170

つかいます:

chsh

パスワードを入力し、使用するシェルへのパスを指定します。

Bashの場合は/bin/bash。Zshのためになること/usr/bin/zsh


15
1 -なぜOPは、パスワードファイルを編集すると、より良い選択であると判断しましたが、これが最良の答えであることを確認していない
kdgregory

1
ええ、私にそれを打ちました、これは標準的な方法です。
ジョンT

1
そして、ubuntuでは、使用するシェルへのパスは... / bin / bash(および/ bin / shは同じではありません)
ハリーウッド

49
または、使用することができますsudo chsh -s /bin/bash username
オレグVaskevich 14年

7
この変更を確認するには、ログアウトしてから再度ログインする必要があります。
ニールトラフト14

37

akiraの答えに加えて、/ etc / passwdファイルを編集してデフォルトのシェルを指定することもできます。

次の例のような行があります。

john:x:1000:1000:john,,,:/home/john:/bin/sh

シェルは最後に指定されます。


8
akiraが示唆する「chsh」コマンドを使用する方がよいでしょう。誤って何かを台無しにする可能性は低くなります。
ラースハウゼス

5
あなたは/ etc / passwdファイルに書き込むことができないとき、「CHSH」を言及しないように提供されています
いんちきキホーテ

1
しかし、もしあなたがその修正にアクセスでき、/etc/passwd注意しているなら、ジョンの答えはシステムが提供するツールをうまく利用することです。
AJP 14

3
この変更を確認するには、ログアウトしてから再度ログインする必要があります。
ニールトラフト14

2
ユーザーパスワードなしでサーバーを実行している場合-パブリック/プライベートsshキーを介してのみアクセスを提供する場合...それも非常に理にかなっています。chshにはパスワードが必要です。
キースジョンハッチソン

4

端末プログラムを確認することがあります。/ bin / bashではなく/ bin / shを実行するように構成されている可能性があります

Bashは、ログインセッションに対してのみ.bash_profileを実行します。.bashrcは、ログインセッションだけでなく、すべてのbashセッションに対して実行されます。.bashrcから.bash_profileを入手するか(循環依存を避けてください!)、またはシェルプログラムとして/ bin / bash -lを実行するように端末プログラムを構成してください。


2
ターミナルプログラムは、リモートマシン上のsshdであり、新しいシェルを生成するため、問題とは関係ありません。
アキラ

2

1つの代替方法は、スタートアップスクリプトの名前を.profileに変更することです。このファイルは、ほとんどのUnixシェルのソースです。


2

bashを有効にします。

$ /bin/bash

ユーザーのシェルを変更します。

$ sudo usermod -s /bin/bash username

どこ:

  -s, --shell SHELL             new login shell for the user account

2
(1)「bashを有効にする」とはどういう意味ですか?(2)ユーザーがリモートシステムで自分のログインシェルを変更たい。なぜ彼はsudoそのシステムにアクセスできると思いますか?別のユーザーのログインシェルを変更するという点で、なぜ指示を提供するのですか?
Gマン

上記のようにchshを使用してもうまくいきませんでした。このコマンドはやった!
リンドバーグあたり

1

シェルをデフォルトにするには、まず次の内容を見て、コンピューターにインストールされ、認識されていることを確認します/etc/shells

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

次にchsh、シェルを変更するために使用します。

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

参照資料

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh

0

あなたの質問には、私が確実に言うには十分な情報がありませんが、以前にも同じ問題に直面しました。パスワードエントリに/ bin / bashがすでに設定されていると仮定すると、それがターミナルの起動方法になります。

GUIターミナルを起動しようとしている場合はgnome-terminal、シェルがbashスタートアップファイルを読み取ることを期待しているかもしれません。ただし、これはUbuntuおよびデフォルトでは他のシステムでは発生しません。

Ubuntuで修正した方法は、gnome-terminalの設定を編集し、起動コマンドをに設定することbash -lです。 -lはの略です--login。これにより、bashはログインシェルとして起動するように指示されます。これにより、ssh経由でログインしたときに取得する起動スクリプトが読み込まれます。

これが現状であることには良い根拠があると確信していますが、Linux、cywgin、macosシステム間で同じプロファイルを共有しているので、それは驚くべきことであり、少し面倒です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.