私は尋ねたこの問題しばらく前にシェルにパスが表示されない問題がありました。最近、私は.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