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

おすすめ記事