ログインするたびにbashプロンプトがリセットされる

ログインするたびにbashプロンプトがリセットされる

私は尋ねたこの質問シェルがパスを表示しないという話は以前ありました。最近、ソース.bashrc化されないことがわかりました(これは通常の練習?) 現在、シェルのコマンドプロンプトは次のようになります。

-bash-4.3#

を実行するとsource .bashrc、期待どおりのシェル コマンド プロンプトが表示されます。

root@ubuntu2011:~#

マシン名はどこですかubuntu2011。ログインするたびにプロンプ​​トが後者のようになるようにするにはどうすればよいですか?

ps は.bashrc次のものから来ています:cp /etc/skel/.bashrc ~/.bashrc


アップデート: の内容は~/.profile次のとおりです。

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n

そしてecho $BASH返品/bin/bash


アップデート: @terdon の質問への回答:

  1. サーバーにログインするにはどうすればいいですか?

私は次のようにログインしますssh [email protected]root

  1. これらのコマンドは root として実行されますか?

はい。


アップデート: 出力ls -l ~/.{profile,bashrc,bash_profile,bash_login}:

ls: cannot access /root/.bash_login: No such file or directory
-rw-r--r-- 1 root root   63 Dec 24  2012 /root/.bash_profile
-rw-r--r-- 1 root root 3637 May 17 17:00 /root/.bashrc
-rw-r--r-- 1 root root  140 Apr 23  2010 /root/.profile

答え1

これは、 経由でログインしているために発生しますssh。これは、ログイン シェルと非ログイン シェルの違いによるものです。ssh 経由で接続すると、ログイン対話型シェルが実行されます。 で説明されているようにman bash、この種のシェルは次のようになります。

bash が対話型ログイン シェルとして、または --login オプション付きの非対話型シェルとして呼び出されると、最初に /etc/profile ファイルが存在する場合はそこからコマンドを読み取って実行します。そのファイルを読み取った後、~/.bash_profile、~/.bash_login、~/.profile をこの順序で探し、最初に存在し読み取り可能なファイルからコマンドを読み取って実行します。シェルの起動時に --noprofile オプションを使用すると、この動作を禁止できます。

言い換えると、~/.bashrcログイン シェルを実行するときに、 はデフォルトで無視されます。簡単な解決策は、読み取られるファイルの 1 つから を明示的に取得することです。上記のように、ログイン シェルは最初に を読み取ろうと~/.bash_profileし、それが存在しない場合は を読み取り~/.bash_login、それも存在しない場合は を読み取ります~/.profile。ファイルがあるため~/.bash_profile、次の行を追加する必要があります。

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

答え2

これを~/.profileに記入してください

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

関連情報