
私は尋ねたこの質問シェルがパスを表示しないという話は以前ありました。最近、ソース.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 の質問への回答:
- サーバーにログインするにはどうすればいいですか?
私は次のようにログインします
ssh [email protected]
root
- これらのコマンドは 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